#!/ usr / bin / env Ġk script Ċ @ file : Maven Repository (" j center "," https :// j center . bin tray . com /") Ċ @ file : Maven Repository (" maven - central "," https :// repo 1 . maven . org / maven 2 /") Ċ @ file : Dep ends On (" org . ko hs uke : github - api : 1 . 1 0 1 ") Ċ Ċ /** Ċ Ġ* ĠScript Ġchecking Ġthat Ġthe Ġrepository Ġcan Ġbe Ġreleased . Ċ Ġ* ĠIt Ġchecks Ġthat : Ċ Ġ* Ġ- Ġthe Ġmilestone Ġhas Ġbeen Ġset , Ġand Ġexists Ċ Ġ* Ġ- Ġthe Ġmilestone Ġhas Ġno Ġopened Ġissues Ċ Ġ* Ġ- Ġthe Ġtag Ġdoes Ġnot Ġexist Ċ Ġ* Ċ Ġ* ĠRun Ġwith Ġ`./ pre - release . k ts Ġ${ GI HUB _ TOKEN } Ġ${ M ILE ST ONE } Ċ Ġ* Ċ Ġ* Ġ 1 . ĠThe Ġgithub Ġtoken Ġis Ġmandatory . Ċ Ġ* Ġ 2 . ĠThe Ġtargeted Ġmilestone . Ċ Ġ* Ċ Ġ* ĠThe Ġmilestone Ġ( mandatory ) Ġis Ġretrieved Ġfrom Ġthe Ġ` M ILE ST ONE ` Ġenv Ġvariable . Ċ Ġ*/ Ċ Ċ import Ġorg . ko hs uke . github .* Ċ import Ġjava . io . File Ċ Ċ val ĠRE PO Ġ= Ġ" small ry e / small ry e - reactive - messaging " Ċ Ċ val Ġtoken Ġ= Ġargs [ 0 ]; Ġ// ĠFail Ġif Ġthe Ġfirst Ġargument Ġis Ġnot Ġthere Ċ val Ġmilestone _ name Ġ= Ġargs [ 1 ]; Ġ// ĠFail Ġif Ġthe Ġsecond Ġargument Ġis Ġnot Ġthere Ċ Ċ val Ġgithub Ġ= ĠGitHub Builder (). with OAuth Token ( token ). build () Ċ val Ġrepository Ġ= Ġgithub . getRepository ( REPO ) Ċ Ċ val Ġnew Version Ġ= Ġmilestone _ name ; Ċ println (" New Ġversion Ġwould Ġbe Ġ${ new Version }") Ċ Ċ val Ġbump To Next Ġ= Ġbump To Next (); Ċ Ċ println (" Checking Ġthe Ġexistence Ġof Ġthe Ġ${ new Version } Ġmilestone ") Ċ val Ġm ilestones Ġ= Ġrepository . list M ilestones ( GH Issue State . ALL ). asList () Ċ fail If Predicate ({ Ġm ilestones . isNull OrEmpty () Ġ}, Ġ" No Ġm ilestones Ġin Ġrepository Ġ${ repository . getName () }") Ċ val Ġexisting M ilestone Ġ= Ġm ilestones . find Ġ{ Ġit . getTitle () Ġ== Ġnew Version } Ċ fail If Predicate ( Ġ{ Ġexisting M ilestone Ġ== Ġnull Ġ}, Ġ" There Ġis Ġno Ġmilestone Ġwith Ġname Ġ${ new Version }, Ġinvalid Ġincrement ") Ċ println (" Checking Ġthe Ġnumber Ġof Ġopen Ġissues Ġin Ġthe Ġmilestone Ġ${ new Version }") Ċ fail If Predicate ( Ġ{ Ġexisting M ilestone ?. get Open Issues () Ġ!= Ġ 0 Ġ}, Ġ" The Ġmilestone Ġ${ new Version } Ġhas Ġ${ existing M ilestone ?. get Open Issues ()} Ġissues Ġopened , Ġcheck Ġ${ existing M ilestone ?. get Html Url () }") Ċ Ċ println (" Listing Ġtags Ġof Ġ${ repository . getName () }") Ċ val Ġtags Ġ= Ġrepository . list Tags (). asList () Ċ fail If Predicate ({ Ġtags . isNull OrEmpty () Ġ}, Ġ" No Ġtags Ġin Ġrepository Ġ${ repository . getName () }") Ċ val Ġtag Ġ= Ġtags . first () Ċ println (" Last Ġtag Ġis Ġ" Ġ+ Ġtag . getName ()) Ċ Ċ println (" Checking Ġthe Ġabsence Ġof Ġthe Ġ${ new Version } Ġtag ") Ċ val Ġexisting Tag Ġ= Ġtags . find Ġ{ Ġit . getName () Ġ== Ġnew Version } Ċ fail If Predicate ( Ġ{ Ġexisting Tag Ġ!= Ġnull Ġ}, Ġ" There Ġis Ġa Ġtag Ġwith Ġname Ġ${ new Version }, Ġinvalid Ġnew Ġrelease Ġversion ") Ċ Ċ println (" Write Ġcomputed Ġversion Ġto Ġ/ tmp / release - version ") Ċ File ("/ tmp / release - version "). write Text ( new Version ) Ċ Ċ if Ġ( bump To Next ()) Ġ{ ĊĠĠĠ Ġval Ġnext Version Ġ= Ġcompute Next Version ( new Version ); ĊĠĠĠ ĠFile ("/ tmp / next - version "). write Text ( next Version ); Ċ } Ċ Ċ fun Ġfail ( message : ĠString , Ġcode : ĠInt Ġ= Ġ 2 ) Ġ{ ĊĠĠĠ Ġprintln ( message ) ĊĠĠĠ Ġkotlin . system . exit Process ( code ) Ċ } Ċ Ċ fun Ġfail If Predicate ( predicate : Ġ() Ġ-> ĠBoolean , Ġmessage : ĠString , Ġcode : ĠInt Ġ= Ġ 2 ) Ġ{ ĊĠĠĠ Ġval Ġsuccess Ġ= Ġpredicate . invoke () ĊĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfail ( message , Ġcode ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġcompute Next Version ( release Version Ġ: ĠString ) Ġ: ĠString Ġ{ ĊĠĠĠ Ġval Ġsegments Ġ= Ġrelease Version . split (".") ĊĠĠĠ Ġif Ġ( segments . size Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfail (" Invalid Ġversion Ġ${ release Version }, Ġnumber Ġof Ġsegments Ġmust Ġbe Ġat Ġleast Ġ 3 , Ġfound : Ġ${ segments . size }") ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġnew Version Ġ= Ġ"${ segments [ 0 ] }.${ segments [ 1 ]. toInt () Ġ+ Ġ 1 }. 0 " ĊĠĠĠ Ġreturn Ġnew Version Ċ } Ċ Ċ fun Ġbump To Next () Ġ: ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġb Ġ= ĠSystem . getenv (" BU MP _ TO _ NEXT "); ĊĠĠĠ Ġreturn Ġb Ġ!= Ġnull Ġ Ġ&& Ġb Ġ== Ġ" true "; Ċ } ĊĊĊĊ