package Ġcom . r net t . plugin Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Single Target Extension Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Compilation Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Compiler Plugin Support Plugin Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Source Set Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Sub plugin Artifact Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Sub plugin Option Ċ Ċ fun ĠKotlin Source Set . all Deps (): ĠSet < Kotlin Source Set > Ġ= Ġdepends On Ġ+ Ġdepends On . flatMap Ġ{ Ġit . all Deps () Ġ}. toSet () Ċ Ċ class ĠPlugin Export Gradle Plugin Ġ: ĠKotlin Compiler Plugin Support Plugin Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget . extensions . create (" plugin Export ", ĠPlugin Export Extension :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply To Compilation ( kotlin Compilation : ĠKotlin Compilation < *> ): ĠProvider < List < Sub plugin Option >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġkotlin Compilation . target ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġtarget . project ĊĊĠĠĠĠĠĠĠ Ġval ĠbasePath Ġ= Ġproject . build Dir . resolve (" plugin Export ") ĊĊĊĠĠĠĠĠĠĠ Ġval Ġtarget Name Ġ= Ġif Ġ( project . extensions . findBy Type ( Kotlin Single Target Extension :: class . java ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexport Dir Ġ= Ġtarget Name ?. let Ġ{ ĠbasePath . resolve ( it ) Ġ} Ġ?: ĠbasePath ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . named ( kotlin Compilation . compile Kotlin Task Name ). configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . outputs . dir ( export Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with PropertyName (" plugin Export Dir Output ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsource Sets Ġ= Ġkotlin Compilation . all Kotlin Source Sets ĊĊĠĠĠĠĠĠĠ Ġval Ġsource Set Str Ġ= Ġsource Sets . join ToString (" || ") Ġ{ Ġset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġsource Sets . filter Ġ{ Ġset Ġin Ġit . all Deps () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( children . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . name Ġ+ Ġ" |" Ġ+ Ġchildren . join ToString ("| ") Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSub plugin Option (" output Dir ", Ġexport Dir . absolute Path ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Name ?. let Ġ{ ĠSub plugin Option (" target Name ", Ġit ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSub plugin Option (" source Sets ", Ġsource Set Str ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Compiler Plugin Id (): ĠString Ġ= Ġ" com . r net t . plugin - export - compiler - plugin " ĊĊĠĠĠ Ġoverride Ġfun Ġget Plugin Artifact (): ĠSub plugin Artifact Ġ= ĠSub plugin Artifact ( ĊĠĠĠĠĠĠĠ ĠBuild Config . PROJECT _ GROUP _ ID , ĊĠĠĠĠĠĠĠ ĠBuild Config . PROJECT _ AR TI FACT _ ID , ĊĠĠĠĠĠĠĠ ĠBuild Config . PROJECT _ VERSION ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Plugin Artifact For Native (): ĠSub plugin Artifact Ġ= ĠSub plugin Artifact ( ĊĠĠĠĠĠĠĠ ĠBuild Config . PROJECT _ GROUP _ ID , ĊĠĠĠĠĠĠĠ ĠBuild Config . PROJECT _ AR TI FACT _ ID Ġ+ Ġ"- native ", ĊĠĠĠĠĠĠĠ ĠBuild Config . PROJECT _ VERSION ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġoverride Ġfun Ġis Applicable ( kotlin Compilation : ĠKotlin Compilation < *> ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġkotlin Compilation . compilation Name Ġ== Ġ" main " Ċ }