/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* Ġ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 . plugin . mpp . pm 2 0 Ċ Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . file . File Collection Ċ import Ġorg . gradle . api . tasks .* Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Metadata Dependency Resolution Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . getAll Compiled Source Set Metadata Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . pm 2 0 . util . dis amb igu ate Name Ċ import Ġorg . jetbrains . kotlin . gradle . targets . metadata . Resolved Metadata Files Provider Ċ import Ġorg . jetbrains . kotlin . gradle . utils . getValue Ċ import Ġjava . io . File Ċ import Ġjavax . inject . Inject Ċ Ċ internal Ġopen Ġclass ĠTransform Kotlin Gran ular Metadata For Fragment Ċ @ Inject Ġconstructor ( ĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġ@ field : Transient ĊĠĠĠ Ġval Ġfragment : ĠKotlin Gradle Fragment , ĊĠĠĠ Ġ// FIX ME Ġannotations ĊĠĠĠ Ġprivate Ġval Ġtransformation : ĠFragment Gran ular Metadata Resolver Ċ ) Ġ: ĠDefault Task () Ġ{ ĊĊĠĠĠ Ġ@ get : Output Directory ĊĠĠĠ Ġval Ġoutputs Dir : ĠFile Ġby Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . build Dir . resolve (" kotlin Fragment Dependency Metadata "). resolve ( fragment . dis amb igu ate Name ("")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") Ġ// ĠGradle Ġinput ĊĠĠĠ Ġ@ get : Ignore Empty Directories ĊĠĠĠ Ġ@ get : Input Files ĊĠĠĠ Ġ@ get : Path Sensitive ( Path Sensitivity . REL ATIVE ) ĊĠĠĠ Ġinternal Ġval Ġall Source Sets Metadata Configuration : ĠFile Collection Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . files ( res olvable Metadata Configuration ( fragment . containing Module )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") Ġ// ĠGradle Ġinput ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġinternal Ġval Ġinput Fragments And Variants : ĠMap < String , ĠIterable < String >> Ġby Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparticip ating Fragments Ġ= Ġfragment . with Ref ines Closure ĊĠĠĠĠĠĠĠ Ġparticip ating Fragments . associate With Ġ{ Ġit . containing Variants Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. entries . associate Ġ{ Ġ( fragment , Ġvariants ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . name Ġto Ġvariants . map Ġ{ Ġit . fragment Name Ġ}. sorted () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") Ġ// ĠGradle Ġinput ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġinternal Ġval Ġinput Variant Dependencies : ĠMap < String , ĠSet < List < String ? >>> Ġby Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparticip ating Fragments Ġ= Ġfragment . with Ref ines Closure ĊĠĠĠĠĠĠĠ Ġval Ġparticip ating Comp il ations Ġ= Ġparticip ating Fragments . flatMap Ġ{ Ġit . containing Variants Ġ} ĊĠĠĠĠĠĠĠ Ġparticip ating Comp il ations . associate Ġ{ Ġvariant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariant . fragment Name Ġto Ġvariant . compile Dependencies Configuration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. all Dependencies . map Ġ{ ĠlistOf ( it . group , Ġit . name , Ġit . version ) Ġ}. toSet () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġ@ delegate : Transient Ġ// Ġexclude Ġfrom ĠGradle Ġinstant Ġexecution Ġstate ĊĠĠĠ Ġinternal Ġval Ġmetadata Dependency Resolution s : ĠIterable < Metadata Dependency Resolution > Ġby Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠ Ġtransformation . resolution s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġinternal Ġval Ġfiles By Resolution : ĠMap < out ĠMetadata Dependency Resolution , ĠFile Collection > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmetadata Dependency Resolution s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Metadata Dependency Resolution . Choose Visible Source Sets >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate With Ġ{ Ġchoose Visible Source Sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Visible Source Sets . getAll Compiled Source Set Metadata ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , Ġoutputs Dir , Ġmaterial ize Files If Ne cessary Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). built By ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġtransform Metadata () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( outputs Dir . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutputs Dir . delete Re cursively () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoutputs Dir . mkdir s () ĊĊĠĠĠĠĠĠĠ Ġmetadata Dependency Resolution s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Metadata Dependency Resolution . Choose Visible Source Sets >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġchoose Visible Source Sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Visible Source Sets . getAll Compiled Source Set Metadata ( project , Ġoutputs Dir , Ġmaterial ize Files If Ne cessary Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠFragment Resolved Metadata Provider ( ĊĠĠĠ Ġtask Provider : ĠTask Provider < out ĠTransform Kotlin Gran ular Metadata For Fragment > Ċ ) Ġ: ĠResolved Metadata Files Provider Ġ{ ĊĠĠĠ Ġoverride Ġval Ġbuild Dependencies : ĠIterable < Task Provider <* >> Ġ= ĠlistOf ( task Provider ) ĊĠĠĠ Ġoverride Ġval Ġmetadata Resolution s : ĠIterable < Metadata Dependency Resolution > Ġby Ġtask Provider . map Ġ{ Ġit . metadata Dependency Resolution s Ġ} ĊĠĠĠ Ġoverride Ġval Ġmetadata Files By Resolution : ĠMap < out ĠMetadata Dependency Resolution , ĠFile Collection > Ġby Ġtask Provider . map Ġ{ Ġit . files By Resolution Ġ} Ċ } Ċ