/* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 - 2 0 2 0 ĠP ier re ĠL er este ux . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġio . sa ag ie . up dat ari um . model Ċ Ċ import Ġmu . Kotlin Logging Ċ Ċ type alias ĠTag Ġ= ĠString Ċ Ċ @ Dsl Marker Ċ annotation Ġclass ĠChangelog Dsl Marker Ċ Ċ /** Ċ Ġ* ĠAllow Ġ[ Change Log ] Ġcreation Ġwith Ġa Ġtypes afe Ġbuilder Ċ Ġ* ĠSample Ġusage : Ċ Ġ* Ġ``` Ċ Ġ* Ġimport Ġio . sa ag ie . up dat ari um . model . change Log Ċ Ġ* Ċ Ġ* Ġchange Log Ġ{ Ċ Ġ* ĠĠ Ġchange Set ( id Ġ= Ġ" Change Set - 1 ", Ġauthor Ġ= Ġ" Hello ĠWorld ") Ġ{ Ċ Ġ* ĠĠĠĠ Ġaction Ġ{ Ċ Ġ* ĠĠĠĠĠĠ Ġ( 1 .. 5 ). forEach Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{" Hello Ġ${ "$ "} it ! "} Ċ Ġ* ĠĠĠĠĠĠ Ġ} Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* ĠĠ Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ġ@ param Ġid Ġthe Ġchange Log Ġid Ċ Ġ* Ġ@ param Ġblock Ġthe Ġcontent Ġblock Ċ Ġ* Ġ@ return Ġthe Ġ[ Change Log ] Ċ Ġ*/ Ċ fun Ġchange Log ( id : ĠString Ġ= Ġ"", Ġblock : ĠChange Log Dsl . () Ġ-> ĠUnit ): ĠChange Log Ġ= ĊĠĠĠ ĠChange Log Dsl ( id ) ĊĠĠĠĠĠĠĠ Ġ. apply ( block ) ĊĠĠĠĠĠĠĠ Ġ. build () Ċ Ċ /** Ċ Ġ* ĠA ĠChange Log Ġtypes afe Ġbuilder Ċ Ġ* Ċ Ġ* Ġ@ param Ġid Ġthe Ġchange Log Ġid Ċ Ġ*/ Ċ @ Change log Dsl Marker Ċ class ĠChange Log Dsl ( val Ġid : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġchange Sets Dsl : ĠMutable List < Change Set Dsl > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġfun Ġchange Set ( id : ĠString , Ġauthor : ĠString , Ġblock : ĠChange Set Dsl . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġthis . change Sets Dsl . add ( Change Set Dsl ( id , Ġauthor ). apply ( block )) ĊĊĠĠĠ Ġ@ Deprecated ( ĊĠĠĠĠĠĠĠ Ġ" Cannot Ġbe Ġused Ġin Ġchange Log Ġblock .", Ġlevel Ġ= ĠDeprec ation Level . ERROR , ĊĠĠĠĠĠĠĠ Ġreplace With Ġ= ĠReplace With (" change Set (\" ...\ ") ") ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġchange Log ( id : ĠString Ġ= Ġ"", Ġblock : ĠChange Log Dsl . () Ġ-> ĠUnit ): ĠNothing Ġ= Ġerror (" ...") ĊĊĠĠĠ Ġinternal Ġfun Ġbuild (): ĠChange Log Ġ= ĊĠĠĠĠĠĠĠ ĠChange Log ( id , Ġthis . change Sets Dsl . map ( Change Set Dsl :: build )) Ċ } Ċ Ċ /** Ċ Ġ* ĠA ĠChange Set Ġtypes afe Ġbuilder Ċ Ġ* Ċ Ġ* Ġ@ param Ġid Ġthe Ġchange Set Ġid Ċ Ġ* Ġ@ param Ġauthor Ġthe Ġchange Set Ġauthor Ċ Ġ*/ Ċ @ Change log Dsl Marker Ċ class ĠChange Set Dsl ( val Ġid : ĠString , Ġval Ġauthor : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġactions : ĠMutable List < Action Dsl > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġvar Ġtags : ĠList < Tag > Ġ= Ġempty List () ĊĠĠĠ Ġvar Ġforce : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġaction ( name : ĠString Ġ= Ġ" basic Action ", Ġblock : ĠAction Dsl . () Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġthis . actions . add ( Action Dsl ( name , Ġblock )) ĊĊĠĠĠ Ġ@ Deprecated ( ĊĠĠĠĠĠĠĠ Ġ" Cannot Ġbe Ġused Ġin Ġchange Set Ġblock .", Ġlevel Ġ= ĠDeprec ation Level . ERROR , ĊĠĠĠĠĠĠĠ Ġreplace With Ġ= ĠReplace With (" action (\" ...\ ") ") ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġchange Log ( id : ĠString Ġ= Ġ"", Ġblock : ĠChange Log Dsl . () Ġ-> ĠUnit ): ĠNothing Ġ= Ġerror (" ...") ĊĊĠĠĠ Ġinternal Ġfun Ġbuild (): ĠChange Set Ġ= ĊĠĠĠĠĠĠĠ ĠChange Set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags Ġ= Ġtags , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions Ġ= Ġactions . map ( Action Dsl :: build ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforce Ġ= Ġforce ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAn ĠAction Ġtypes afe Ġbuilder Ċ Ġ* ĠJust Ġprovide Ġa Ġ` logger ` Ċ Ġ* Ċ Ġ* Ġ@ param Ġname Ġthe Ġaction Ġname , Ġused Ġby Ġthe Ġlogger Ċ Ġ* Ġ@ param Ġblock Ġthe Ġcode Ġto Ġrun Ġin Ġthe Ġaction Ċ Ġ*/ Ċ @ Change log Dsl Marker Ċ class ĠAction Dsl ( val Ġname : ĠString , Ġval Ġblock : ĠAction Dsl . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġlogger Ġ= ĠKotlin Logging . logger ( name ) ĊĊĠĠĠ Ġinternal Ġfun Ġbuild (): ĠAction Ġ= ĠAction Ġ{ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} Ċ } Ċ