/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠChristian ĠGr ach Ġ< ch rist ian . gr ach @ cm g apps . com > Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . cm g apps . license Ċ Ċ import Ġcom . cm g apps . license . util . plus Ċ import Ġcom . cm g apps . license . util . with Ja Co Co Ċ import Ġorg . gradle . test kit . runner . Gradle Runner Ċ import Ġorg . gradle . test kit . runner . Task Outcome Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . Matchers .` is ` Ċ import Ġorg . hamcrest . Matchers . matches Pattern Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . io . TempDir Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util . Properties Ċ import Ġjava . util . regex . Pattern Ċ Ċ private Ġconst Ġval Ġkotlin Multi platform Plugin Ġ= Ġ" org . jetbrains . kotlin : kotlin - gradle - plugin : 1 . 5 . 3 1 " Ċ Ċ class ĠLicense Plugin Multi platform Should Ġ{ ĊĊĠĠĠ Ġ@ TempDir ĊĠĠĠ Ġlateinit Ġvar Ġtest Project Dir : ĠPath ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbuild File : ĠFile ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġreport Folder : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmaven Repo Url : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgradle Runner : ĠGradle Runner ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplugin Classpath Resource Ġ= Ġjava Class . class Loader . getResource AsStream (" plugin - under - test - metadata . properties ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Did Ġnot Ġfind Ġplugin Ġclasspath Ġresource , Ġrun Ġ`: plugin UnderTest Metadata ` Ġtask ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġplugin Classpath Ġ= ĠProperties (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload ( plugin Classpath Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetProperty (" implementation - classpath ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. split (': ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (", Ġ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"' $ it '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuild File Ġ= ĠFiles . create File ( Paths . get ( test Project Dir . toString (), Ġ" build . gradle ")). to File () ĊĠĠĠĠĠĠĠ Ġreport Folder Ġ= Ġ"$ test Project Dir / build / reports / licenses " ĊĠĠĠĠĠĠĠ Ġmaven Repo Url Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class . getResource ("/ maven ") ?. to URI ()?. toString () Ġ?: Ġerror (""" resource Ġfolder Ġ"/ maven " Ġnot Ġfound ! """) ĊĊĠĠĠĠĠĠĠ Ġbuild File Ġ+ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild script Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj center () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Ġ"$ kotlin Multi platform Plugin " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Ġfiles ($ plugin Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġplugin : Ġ' org . jetbrains . kotlin . multi platform ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġplugin : Ġ' com . cm g apps . licenses ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ'$ maven Repo Url ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġgradle Runner Ġ= ĠGradle Runner . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Project Dir ( test Project Dir . to File ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Ja Co Co () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` apply Ġplugin `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġ" license Multi platform Report " ĊĊĠĠĠĠĠĠĠ Ġbuild File Ġ+ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgradle Runner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" :$ task Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result . task (" :$ task Name ") ?. outcome , Ġ` is `( Task Outcome . SUCCESS )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate Ġoverall Ġlicenses `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġ" license Multi platform Report " ĊĊĠĠĠĠĠĠĠ Ġbuild File Ġ+ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbrowser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' com . google . firebase : firebase - core : 1 0 . 0 . 1 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' com . squareup . ret rofit 2 : ret rofit : 2 . 3 . 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' group : name : 1 . 0 . 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml . enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgradle Runner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" :$ task Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . output , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatches Pattern ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" .* W rote ĠTEXT Ġreport Ġto Ġ. *$ report Folder /$ task Name / licenses . txt .* ". to Pattern ( Pattern . DOT ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("$ report Folder /$ task Name / licenses . txt "). read Text (). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" License s \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶ ľ âĶĢ Ġcom . google . firebase : firebase - core : 1 0 . 0 . 1 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶ ľ âĶĢ ĠRet rofit : 2 . 3 . 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶĤ Ġ ĠâĶľ âĶĢ ĠLicense : ĠApache Ġ 2 . 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶĤ Ġ ĠâĶĶ âĶĢ ĠURL : Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 . txt \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶĶ âĶĢ ĠFake Ġdependency Ġname : 1 . 0 . 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶľ âĶĢ ĠLicense : ĠSome Ġlicense \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶĶ âĶĢ ĠURL : Ġhttp :// website . t ld /" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate ĠJVM Ġlicenses `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġ" license Multi platform Jvm Report " ĊĊĠĠĠĠĠĠĠ Ġbuild File Ġ+ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbrowser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' com . google . firebase : firebase - core : 1 0 . 0 . 1 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' com . squareup . ret rofit 2 : ret rofit : 2 . 3 . 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjs Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' group : name : 1 . 0 . 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml . enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgradle Runner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" :$ task Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . output , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatches Pattern ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" .* W rote ĠTEXT Ġreport Ġto Ġ. *$ report Folder /$ task Name / licenses . txt .* ". to Pattern ( Pattern . DOT ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("$ report Folder /$ task Name / licenses . txt "). read Text (). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" License s \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶ ľ âĶĢ Ġcom . google . firebase : firebase - core : 1 0 . 0 . 1 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶĶ âĶĢ ĠRet rofit : 2 . 3 . 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶľ âĶĢ ĠLicense : ĠApache Ġ 2 . 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶĶ âĶĢ ĠURL : Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 . txt " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate Ġnative Ġios Ġlicenses `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġ" license Multi platform I os Arm 6 4 Report " ĊĊĠĠĠĠĠĠĠ Ġbuild File Ġ+ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġios Arm 6 4 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' com . google . firebase : firebase - core : 1 0 . 0 . 1 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġios Arm 6 4 Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' group : name : 1 . 0 . 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml . enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgradle Runner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" :$ task Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . output , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatches Pattern ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" .* W rote ĠTEXT Ġreport Ġto Ġ. *$ report Folder /$ task Name / licenses . txt .* ". to Pattern ( Pattern . DOT ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("$ report Folder /$ task Name / licenses . txt "). read Text (). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" License s \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶ ľ âĶĢ Ġcom . google . firebase : firebase - core : 1 0 . 0 . 1 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶĶ âĶĢ ĠFake Ġdependency Ġname : 1 . 0 . 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶľ âĶĢ ĠLicense : ĠSome Ġlicense \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶĶ âĶĢ ĠURL : Ġhttp :// website . t ld /" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` generate Ġcustom Ġtarget Ġname `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġ" license Multi platform Custom Report " ĊĊĠĠĠĠĠĠĠ Ġbuild File Ġ+ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm (" custom ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' com . google . firebase : firebase - core : 1 0 . 0 . 1 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ' group : name : 1 . 0 . 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml . enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgradle Runner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Arguments (" :$ task Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . output , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatches Pattern ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" .* W rote ĠTEXT Ġreport Ġto Ġ. *$ report Folder /$ task Name / licenses . txt .* ". to Pattern ( Pattern . DOT ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("$ report Folder /$ task Name / licenses . txt "). read Text (). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" License s \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶ ľ âĶĢ Ġcom . google . firebase : firebase - core : 1 0 . 0 . 1 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" âĶĶ âĶĢ ĠFake Ġdependency Ġname : 1 . 0 . 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶľ âĶĢ ĠLicense : ĠSome Ġlicense \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ ĠâĶĶ âĶĢ ĠURL : Ġhttp :// website . t ld /" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ