import Ġorg . gradle . api . Project Ċ Ċ // ĠCheck Ġto Ġsee Ġif Ġa Ġversion Ġnumber Ġis Ġset Ġin Ġsettings . gradle . k ts Ġvia Ġartifact Version . Ċ // ĠIf Ġit Ġis Ġnot Ġset , Ġget Ġthe Ġversion Ġnumber Ġfrom Ġthe Ġrelease Ġbranch . Ċ // ĠFall Ġback Ġto Ġ` branch - hash ` Ġwhen Ġthe Ġprevious Ġtwo Ġare Ġnot Ġtrue . Ċ fun ĠProject . artifact Version ( project : ĠProject ): ĠString Ġ= ĊĠĠĠ Ġproject . find Property (" artifact Version ") ?. toString () Ġ?: Ġget Build Version (). toString () Ċ Ċ private Ġfun ĠString . run Command ( working Dir : Ġjava . io . File ): ĠString Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġthis . split ("\\ s ". to Regex ()) ĊĠĠĠĠĠĠĠ Ġval Ġproc Ġ= ĠProcess Builder (* parts . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory ( working Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Output ( Process Builder . Redirect . PIPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Error ( Process Builder . Redirect . PIPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĊĠĠĠĠĠĠĠ Ġproc . waitFor ( 5 , Ġjava . util . concurrent . TimeUnit . SECONDS ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Stream Ġ= Ġproc . error Stream . buffered Reader (). read Text () ĊĠĠĠĠĠĠĠ Ġif Ġ( error Stream Ġ!= Ġ"") Ġthrow ĠRuntimeException ( error Stream ) ĊĊĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġproc . inputStream . buffered Reader (). read Text (). trim () ĊĠĠĠĠĠĠĠ Ġreturn ĠinputStream ĊĠĠĠ Ġ} Ġcatch ( e : Ġjava . io . IOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠVERSION _ REGEX Ġ= Ġ"\\ d + \\. \\ d + \\. \\ d +". to Regex () Ċ private Ġfun Ġget Release Version (): ĠString Ġ= Ġ" git Ġdescribe Ġ-- always ". run Command ( java . io . File ("./ ")). replace First (" v ", Ġ"") Ċ private Ġfun Ġget Branch (): ĠString Ġ= Ġ" git Ġrev - parse Ġ-- abbrev - ref ĠHEAD ". run Command ( java . io . File ("./ ")). replace ('/', Ġ'_ ') Ċ private Ġfun Ġget Branch Commit Hash (): ĠString Ġ= Ġ" git Ġlog Ġ- 1 Ġ-- format =% h ". run Command ( java . io . File ("./ ")) Ċ Ċ private Ġfun Ġget Build Version (): ĠString Ġ{ ĊĠĠĠ Ġvar Ġversion Ġ= Ġget Release Version () ĊĠĠĠ Ġif Ġ(! VERSION _ REGEX . matches ( version )) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbranch Ġ= Ġget Branch () ĊĠĠĠĠĠĠĠ Ġval Ġcommit Ġ= Ġget Branch Commit Hash () ĊĠĠĠĠĠĠĠ Ġversion Ġ= Ġ"$ branch -${ commit }" ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġversion Ċ } Ċ