import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin Compile Ċ import Ġjava . io . ByteArray OutputStream Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġ` java - gradle - plugin ` ĊĠĠĠ Ġkotlin (" jvm ") Ġversion Ġ" 1 . 3 . 4 1 " Ċ } Ċ Ċ group Ġ= Ġ" be . gv den bro " Ċ version Ġ= Ġgit Describe Version () Ċ Ċ repositories Ġ{ ĊĠĠĠ Ġj center () Ċ } Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation ( gradle Api ()) ĊĠĠĠ Ġimplementation ( platform (" org . jetbrains . kotlin : kotlin - bom ")) ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin : kotlin - stdlib - jdk 8 ") ĊĠĠĠ Ġimplementation (" com . be ust : kl ax on : 5 . 0 . 1 ") ĊĊĠĠĠ Ġtest Implementation (" org . jetbrains . kotlin : kotlin - test ") ĊĠĠĠ Ġtest Implementation (" org . jetbrains . kotlin : kotlin - test - junit ") Ċ } Ċ Ċ gradle Plugin Ġ{ ĊĠĠĠ Ġ// ĠDefine Ġthe Ġplugin ĊĠĠĠ Ġval Ġg reeting Ġby Ġplugins . creating Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ" be . gv den bro . k ilt " ĊĠĠĠĠĠĠĠ Ġimplementation Class Ġ= Ġ" be . gv den bro . k ilt . K ilt Plugin " ĊĠĠĠ Ġ} Ċ } Ċ Ċ java Ġ{ ĊĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 ĊĠĠĠ Ġtarget Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 Ċ } Ċ Ċ tasks Ġ{ ĊĠĠĠ Ġwith Type < Kotlin Compile >(). configure Each Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= Ġ" 1 . 8 " ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġgit Describe Version (): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġstd Out Ġ= ĠByteArrayOutputStream () ĊĊĠĠĠ Ġexec Ġ{ ĊĠĠĠĠĠĠĠ Ġcommand Line (" git ", Ġ" describe ", Ġ"-- tags ", Ġ"-- long ", Ġ"-- always ", Ġ"-- match ", Ġ"[ 0 - 9 ].[ 0 - 9 ]* ") ĊĠĠĠĠĠĠĠ Ġstandard Output Ġ= Ġstd Out ĊĠĠĠĠĠĠĠ Ġworking Dir Ġ= Ġroot Dir ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdescribe Ġ= Ġstd Out . toString (). trim () ĊĠĠĠ Ġval Ġgit Describe Match Regex Ġ= Ġ""" (\ d +)\ . (\ d + )- (\ d + )- .* """. to Regex () ĊĊĠĠĠ Ġreturn Ġgit Describe Match Regex . match Ent ire ( describe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . de structured ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġ( major , Ġminor , Ġpatch ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ major .$ minor .$ patch " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠGradle Exception (" Cannot Ġparse Ġgit Ġdescribe Ġ'$ describe '") Ċ }