/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠHer man ĠChe ung Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġio . hk hc . gradle . test Ċ Ċ import Ġio . hk hc . gradle . test . art if ac ory . Mock Art ifactory Repository Server Ċ import Ġio . hk hc . utils . Properties Editor Ċ import Ġio . hk hc . utils . tree . Tree Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* Ġsetup Ċ Ġ* Ġ- Ġkeystore Ġlocation Ċ Ġ* Ġ- Ġlocal Ġrepo Ġlocation Ċ Ġ* Ġ- Ġbase Ġpath Ġto Ġtemplate Ġprojects Ċ Ġ* Ġ- Ġsettings . gradle Ċ Ġ* Ġ- Ġgradle . properties Ċ Ġ*/ Ċ open Ġclass ĠDefault Gradle Project Setup ( val Ġproject Dir : ĠFile ) Ġ{ ĊĊĠĠĠ Ġ/* ĠSub - project Ġdirectories Ġ*/ ĊĠĠĠ Ġvar Ġsub Proj Dirs Ġ= ĠarrayOf < String >() ĊĊĠĠĠ Ġ/* Ġdirectory Ġto Ġplace Ġfile Ġsigning Ġkeystore Ġ*/ ĊĠĠĠ Ġvar Ġkeystore Template Dir Ġ= Ġ" functional TestData / keystore " ĊĊĠĠĠ Ġ/* Ġdirectories Ġto Ġcopy Ġsource Ġcode Ġto Ġproject , Ġor Ġsub projects Ġif Ġany Ġ*/ ĊĠĠĠ Ġvar Ġsource Set Template Dirs Ġ= ĠarrayOf (" functional TestData / lib ") ĊĊĠĠĠ Ġ/* Ġdirectory Ġfor Ġlocal Ġrepository Ġ*/ ĊĠĠĠ Ġvar Ġlocal Repo Dir Ġ= Ġ" local Repo " ĊĊĠĠĠ Ġ/* Ġenvironment Ġvariables Ġto Ġrun ĠGradle Ġ*/ ĊĠĠĠ Ġvar Ġenv s Ġ= Ġdefault En vs ( project Dir ) ĊĊĠĠĠ Ġ/* Ġmock Ġserver Ġto Ġm imic Ġrepository Ġservers Ġto Ġaccept Ġrequests Ġfor Ġtest Ġ*/ ĊĠĠĠ Ġvar Ġmock Servers Ġ= Ġmutable ListOf < Base Mock Repository Server >() ĊĊĠĠĠ Ġvar Ġmaven Mock Server : ĠMock Maven Repository Server ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock Servers . add ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġart ifactory Mock Server : ĠMock Art ifactory Repository Server ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock Servers . add ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġexpect Ġlist Ġof Ġtasks Ġexecuted Ġin Ġthe ĠGradle Ġrun , Ġshould Ġbe Ġprefixed Ġby Ġ':' Ġor Ġ': proj :' Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġexpected Task Graph : ĠTree < String > ĊĊĠĠĠ Ġval Ġlocal Repo Dir File Ġ= ĠFile ( project Dir , Ġlocal Repo Dir ) ĊĊĠĠĠ Ġfun Ġsetup Ke yst ore () Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( keystore Template Dir ). copy Re cursively ( project Dir ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġsetup Source Sets () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sub Proj Dirs . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set Template Dirs . forEach Ġ{ Ġsource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( source ). copy Re cursively ( project Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set Template Dirs . zip ( sub Proj Dirs ). forEach Ġ{ Ġ( source , Ġproj ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( source ). copy Re cursively ( File ( project Dir , Ġproj )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Local Repo () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocal Repo Dir File . mkdir s () ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" maven . repo . local ", Ġlocal Repo Dir File . absolute Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Gradle Properties ( block : ĠProperties Editor . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠProperties Editor ("$ project Dir / gradle . properties ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . gradle . jvm args " Ġto Ġ"- X mx 2 0 0 0 m " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . gradle . parallel " Ġto Ġ" false " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup KeyStore ( project Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock . invoke ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Settings Gradle ( base : ĠString Ġ= Ġ"") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sub Proj Dirs . size Ġ>= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproj List Ġ= Ġsub Proj Dirs . join ToString (",") Ġ{ Ġ"\ ": $ it \"" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" settings . gradle ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ base \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude ($ proj List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup ( block : ĠDefault Gradle Project Setup . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠDefault Gradle Project Setup Ġ{ ĊĠĠĠĠĠĠĠ Ġblock . invoke ( this ) ĊĠĠĠĠĠĠĠ Ġsub Proj Dirs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("$ project Dir /$ it "). mkdir s () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup Ke yst ore () ĊĠĠĠĠĠĠĠ Ġsetup Source Sets () ĊĠĠĠĠĠĠĠ Ġsetup Local Repo () ĊĠĠĠĠĠĠĠ Ġsetup Settings Gradle () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite File ( relative Path : ĠString , Ġcontent : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ("$ project Dir /$ relative Path "). write Text ( content ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Gradle Task Tester (): ĠGradle Task Tester Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGradle Task Tester ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Dir , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv s ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ