package Ġnet . cord a . plugins Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . artifacts . Configuration Container Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Standard Copy Option Ċ import Ġkotlin . math . max Ċ Ċ /** Ċ Ġ* ĠM im ics Ġthe Ġ" project . ext " Ġfunctionality Ġin Ġgro ovy Ġwhich Ġprovides Ġa Ġdirect Ċ Ġ* Ġaccessor Ġto Ġthe Ġ" ext " Ġextension Ġ( See : ĠExtra Properties Extension ) Ċ Ġ*/ Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠProject . find Root Property ( name : ĠString ): ĠT ? Ġ{ ĊĠĠĠ Ġreturn Ġroot Project . find Property ( name ) Ġas ? ĠT Ċ } Ċ Ċ fun ĠProject . configuration ( name : ĠString ): ĠConfiguration Ġ= Ġconfigurations . single Ġ{ Ġit . name Ġ== Ġname Ġ} Ċ Ċ class ĠUtils Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Child Configuration ( name : ĠString , Ġparent : ĠConfiguration , Ġconfigurations : ĠConfiguration Container ): ĠConfiguration Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconfigurations . find ByName ( name ) Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġconfigurations . create ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Trans itive Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . extends From ( configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Compile Configuration ( name : ĠString , Ġconfigurations : ĠConfiguration Container ): ĠConfiguration Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Child Configuration ( name , Ġconfigurations . single Ġ{ Ġit . name Ġ== Ġ" compile " Ġ}, Ġconfigurations ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġfunction Ġis Ġcalled Ġfrom Ġthe Ġgro ovy Ġqu asar - utils Ġplugin . ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Runtime Configuration ( name : ĠString , Ġconfigurations : ĠConfiguration Container ): ĠConfiguration Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Child Configuration ( name , Ġconfigurations . single Ġ{ Ġit . name Ġ== Ġ" runtime " Ġ}, Ġconfigurations ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcompare Versions ( v 1 : ĠString , Ġv 2 : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġparse Version String ( v : ĠString ) Ġ= Ġv . split (". "). flatMap Ġ{ Ġit . split ("- ") Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . valueOf ( it ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed 1 Ġ= Ġparse Version String ( v 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed 2 Ġ= Ġparse Version String ( v 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmax ( parsed 1 . count (), Ġparsed 2 . count ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompare Result Ġ= Ġparsed 1 . getOrElse ( i ) Ġ{ Ġ 0 Ġ}. compareTo ( parsed 2 . getOrElse ( i ) Ġ{ Ġ 0 Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( compare Result Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcompare Result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate TempFile From Resource ( resource Path : ĠString , Ġtemp FileName : ĠString , Ġtemp File Extension : ĠString ): ĠPath Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠFiles . create TempFile ( temp FileName , Ġtemp File Extension ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis :: class . java . class Loader . getResource AsStream ( resource Path ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . copy ( it , Ġpath , ĠStandard Copy Option . REPLACE _ EXIST ING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . to File (). delete On Exit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpath ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }