/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . tasks Ċ Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . file . File Collection Ċ import Ġorg . gradle . api . plugins . Java Plugin Convention Ċ import Ġorg . gradle . api . tasks .* Ċ import Ġorg . gradle . jvm . tasks . Jar Ċ import Ġorg . jetbrains . kotlin . gradle . utils . is Class File Ċ import Ġorg . jetbrains . kotlin . gradle . utils . is Gradle Version At Least Ċ import Ġjava . io . File Ċ Ċ internal Ġopen Ġclass ĠIn spect Classes For Multi Module IC Ġ: ĠDefault Task () Ġ{ ĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġlateinit Ġvar Ġjar Task : ĠJar ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġlateinit Ġvar Ġsource SetName : ĠString ĊĊĠĠĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠĠĠ Ġ@ get : OutputFile ĊĠĠĠ Ġinternal Ġval Ġclasses List File : ĠFile ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠFile ( File ( project . build Dir , ĠK OT LIN _ BUILD _ DIR _ NAME ), Ġ"${ sanitize FileName ( jar Task . archive Name )} - classes . txt ") ĊĊĠĠĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠĠĠ Ġ@ get : Input Files ĊĠĠĠ Ġinternal Ġval Ġclass Files : ĠFile Collection ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconvention Ġ= Ġproject . convention . find Plugin ( Java Plugin Convention :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Set Ġ= Ġconvention ?. source Sets ?. find ByName ( source SetName ) Ġ?: Ġreturn Ġproject . files () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Gradle Version At Least ( 4 , Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Trees Ġ= Ġsource Set . output . classes Dirs . map Ġ{ Ġproject . file Tree ( it ). include (" ** /*. class ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . files ( file Trees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . output . as File Tree . filter Ġ{ Ġit . is Class File () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġinternal Ġval Ġarchive Path : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġjar Task . archive Path . canonical Path ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġclasses List File . parent File . mkdir s () ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġclass Files . map Ġ{ Ġit . absolute Path Ġ}. sorted (). join ToString ( File . path Separator ) ĊĠĠĠĠĠĠĠ Ġclasses List File . write Text ( text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsanitize FileName ( candidate : ĠString ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġcandidate . filter Ġ{ Ġit . is Letter Or Digit () Ġ} Ċ }