package Ġorg . jetbrains . kotlin Ċ Ċ import Ġgro ovy . lang . Closure Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . Task Ċ import Ġorg . gradle . api . tasks . Output Directory Ċ import Ġorg . gradle . api . tasks . OutputFile Ċ import Ġjava . io . File ĊĊ Ċ open Ġclass ĠVersion Generator : ĠDefault Task () Ġ{ ĊĠĠĠ Ġ@ Output Directory ĊĠĠĠ Ġval Ġversion Source Directory Ġ= Ġproject . file (" build / generated ") ĊĠĠĠ Ġ@ OutputFile ĊĠĠĠ Ġval Ġversion File : File Ġ= Ġproject . file ("${ version Source Directory . path }/ org / jetbrains / kotlin / kon an / Kon an Version . kt ") ĊĊĊĠĠĠ Ġoverride Ġfun Ġconfigure ( closure : ĠClosure < *> ): ĠTask Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsuper . configure ( closure ) ĊĠĠĠĠĠĠĠ Ġdo First Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperator Ġfun ĠString . unary Plus () Ġ= Ġthis @ build String . append ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġproject . properties [" kon an Version "]. toString (). split (".") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmajor Ġ= Ġversion [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminor Ġ= Ġversion [ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaintenance Ġ= Ġif Ġ( version . size Ġ> Ġ 2 ) Ġversion [ 2 ]. toInt () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= ĠSystem . getenv (" env . dep . Kotlin _ Kotlin Native _ Master _ Kotlin Native Checkout . build . counter ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . split ("- ")[ 2 ]. toInt () Ġ// 7 - dev - build count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?: Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeta Ġ= Ġproject . properties [" kon an Meta Version "] ?. let Ġ{ Ġ" Meta Version .${ it . toString (). toUpperCase () }" Ġ} Ġ?: Ġ" Meta Version . DEV " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| package Ġorg . jetbrains . kotlin . kon an ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| data Ġclass ĠKon an Version ( val Ġmeta : ĠMeta Version Ġ= ĠMeta Version . DEV , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmajor : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminor : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaintenance : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild : Int ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠ Ġval ĠCURRENT Ġ= ĠKon an Version ($ meta , Ġ$ major , Ġ$ minor , Ġ$ maintenance , Ġ$ build ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġprivate Ġval Ġversion String Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠ Ġ"${ '$ ' }{ meta . name } Ġ${ '$ '} major .${ '$ '} minor .${ '$ '} maintenance -${ '$ '} build ". trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġoverride Ġfun ĠtoString () Ġ= Ġversion String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion File . print Writer (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . println ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ