/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . gradle . kotlin . dsl . resolver Ċ Ċ import Ġorg . gradle . internal . classpath . Class Path Ċ Ċ import Ġorg . gradle . kotlin . dsl . is Gradle Kotlin Dsl Jar Ċ import Ġorg . gradle . kotlin . dsl . support . filter Ċ Ċ import Ġjava . io . File ĊĊ Ċ const Ġval Ġbuild Src Source Roots FilePath Ġ= Ġ" build / source - roots / build Src / source - roots . txt " ĊĊ Ċ object ĠSource Path Provider Ġ{ ĊĊĠĠĠ Ġfun Ġsource Path For ( ĊĠĠĠĠĠĠĠ Ġclass Path : ĠClass Path , ĊĠĠĠĠĠĠĠ Ġproject Dir : ĠFile , ĊĠĠĠĠĠĠĠ Ġgradle Home Dir : ĠFile ?, ĊĠĠĠĠĠĠĠ Ġsource Distribution Resolver : ĠSource Distribution Provider ĊĠĠĠ Ġ): ĠClass Path Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġgradle Kotlin Dsl Jar Ġ= Ġclass Path . filter (:: is Gradle Kotlin Dsl Jar ) ĊĠĠĠĠĠĠĠ Ġval Ġproject Build Src Roots Ġ= Ġbuild Src Roots Of ( project Dir ) ĊĠĠĠĠĠĠĠ Ġval Ġgradle Source Roots Ġ= Ġgradle Home Dir ?. let Ġ{ Ġsource Roots Of ( it , Ġsource Distribution Resolver ) Ġ} Ġ?: Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġgradle Kotlin Dsl Jar Ġ+ Ġproject Build Src Roots Ġ+ Ġgradle Source Roots ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġsource Ġdirectories Ġfrom Ġbuild Src Ġif Ġany . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġbuild Src Roots Of ( project Root : ĠFile ): ĠCollection < File > Ġ= ĊĠĠĠĠĠĠĠ Ġproject Root . resolve (" build Src /$ build Src Source Roots FilePath ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . isFile Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . read Lines () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġproject Root . resolve (" build Src /$ it ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġbuild Src Roots Fallback For ( project Root ) ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġbuild Src Roots Fallback For ( project Root : ĠFile ) Ġ= ĊĠĠĠĠĠĠĠ Ġsub Dirs Of ( File ( project Root , Ġ" build Src / src / main ")) ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġsource Roots Of ( gradle Installation : ĠFile , Ġsource Distribution Resolver : ĠSource Distribution Provider ): ĠCollection < File > Ġ= ĊĠĠĠĠĠĠĠ Ġgradle Installation Sources ( gradle Installation ) Ġ?: Ġdownloaded Sources ( source Distribution Resolver ) ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġgradle Installation Sources ( gradle Installation : ĠFile ) Ġ= ĊĠĠĠĠĠĠĠ ĠFile ( gradle Installation , Ġ" src "). take If Ġ{ Ġit . exists () Ġ} ?. let Ġ{ Ġsub Dirs Of ( it ) Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġdownloaded Sources ( source Distribution Resolver : ĠSource Distribution Provider ) Ġ= ĊĠĠĠĠĠĠĠ Ġsource Distribution Resolver . source Dirs () Ċ } ĊĊ Ċ internal Ċ fun Ġsub Dirs Of ( dir : ĠFile ): ĠCollection < File > Ġ= ĊĠĠĠ Ġif Ġ( dir . isDirectory ) Ġdir . list Files (). filter Ġ{ Ġit . isDirectory Ġ}. sorted By Ġ{ Ġit . name Ġ} ĊĠĠĠ Ġelse Ġempty List () Ċ