/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 Ġ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 . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" Un stable Api Usage ") Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . script ing . internal Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . artifacts . transform . Artifact Transform Ċ import Ġorg . gradle . api . attributes . Attribute Ċ import Ġorg . gradle . api . plugins . Java Plugin Convention Ċ import Ġorg . gradle . api . tasks . compile . Abstract Compile Ċ import Ġorg . jetbrains . kotlin . cli . common . messages . Message Renderer Ċ import Ġorg . jetbrains . kotlin . cli . common . messages . Print ing Message Collector Ċ import Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Jvm Compile Ċ import Ġorg . jetbrains . kotlin . gradle . dsl . multi platform Extension OrNull Ċ import Ġorg . jetbrains . kotlin . gradle . internal . K apt Generate Stub s Task Ċ import Ġorg . jetbrains . kotlin . gradle . plugin .* Ċ import Ġorg . jetbrains . kotlin . gradle . script ing . Script ing Extension Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin Compile Ċ import Ġorg . jetbrains . kotlin . gradle . utils . is Gradle Version At Least Ċ import Ġorg . jetbrains . kotlin . script ing . compiler . plugin . impl . reporter Ċ import Ġorg . jetbrains . kotlin . script ing . definitions . Script Definitions From Classpath Discovery Source Ċ import Ġjava . io . File Ċ import Ġkotlin . script . experimental . jvm . default Jvm Script ing Host Configuration Ċ Ċ private Ġconst Ġval ĠMIN _ SUPPORTED _ GRAD LE _ MAJOR _ VERSION Ġ= Ġ 5 Ċ private Ġconst Ġval ĠMIN _ SUPPORTED _ GRAD LE _ MINOR _ VERSION Ġ= Ġ 0 Ċ Ċ private Ġconst Ġval ĠS CRIPT ING _ LOG _ PREFIX Ġ= Ġ" kotlin Ġscripting Ġplugin :" Ċ Ċ class ĠScript ing Gradle Sub plugin Ġ: ĠPlugin < Project > Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMIS CONFIGURATION _ MESSAGE _ SUFFIX Ġ= Ġ" the Ġplugin Ġis Ġprobably Ġapplied Ġby Ġa Ġmistake " ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Enabled ( project : ĠProject ) Ġ= Ġproject . plugins . find Plugin ( Script ing Gradle Sub plugin :: class . java ) Ġ!= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġconfigure For Source Set ( project : ĠProject , Ġsource SetName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiscovery Configuration Ġ= Ġproject . configurations . maybe Create ( get Discovery Classpath Configuration Name ( source SetName )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Can Be Cons umed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Script Ġfilename Ġextensions Ġdiscovery Ġclasspath Ġconfiguration " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . info ("$ SCRIPT ING _ LOG _ PREFIX Ġcreated Ġthe Ġscripting Ġdiscovery Ġconfiguration : Ġ${ discovery Configuration . name }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Discovery Transformation ( project , Ġdiscovery Configuration , Ġget Discovery Results Configuration Name ( source SetName )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjava Plugin Convention Ġ= Ġproject . convention . find Plugin ( Java Plugin Convention :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java Plugin Convention ?. source Sets ?. isEmpty () Ġ== Ġfalse ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfigure Action : Ġ( Kotlin Compile ) Ġ-> Ġ( Unit ) Ġ= Ġ{ Ġtask Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task Ġ! is ĠK apt Generate Stub s Task ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiscovery Classpath Configuration Name Ġ= Ġget Discovery Classpath Configuration Name ( task . source SetName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiscovery Classpath Configuration Ġ= Ġproject . configurations . find ByName ( discovery Classpath Configuration Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscovery Classpath Configuration Ġ== Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . warn ("$ SCRIPT ING _ LOG _ PREFIX Ġ$ project .${ task . name } Ġ- Ġconfiguration Ġnot Ġfound : Ġ$ discovery Classpath Configuration Name , Ġ$ MIS CONFIGURATION _ MESSAGE _ SUFFIX ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscovery Classpath Configuration . all Dependencies . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġskip Ġfurther Ġchecks Ġ- Ġuser Ġdid Ġnot Ġconfigured Ġany Ġdiscovery Ġsources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! is Gradle Version At Least ( MIN _ SUPPORTED _ GRAD LE _ MAJOR _ VERSION , ĠMIN _ SUPPORTED _ GRAD LE _ MINOR _ VERSION ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . warn ("$ SCRIPT ING _ LOG _ PREFIX Ġincompatible ĠGradle Ġversion . ĠPlease Ġuse Ġthe Ġplugin Ġwith ĠGradle Ġversion Ġ$ MIN _ SUPPORTED _ GRAD LE _ MAJOR _ VERSION .$ MIN _ SUPPORTED _ GRAD LE _ MINOR _ VERSION Ġor Ġnewer .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Scripts Extensions ( project , Ġjava Plugin Convention , Ġtask . source SetName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . warn ("$ SCRIPT ING _ LOG _ PREFIX Ġapplied Ġin Ġthe Ġnon - supported Ġenvironment Ġ( error Ġreceived : Ġ${ e . message }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . with Type ( Kotlin Compile :: class . java ). configure Each ( configure Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġimplement Ġsupport Ġfor Ġdiscovery Ġin ĠM PP Ġproject : Ġuse ĠKotlin Source Set Ġdirectly Ġand Ġdo Ġnot Ġrely Ġon Ġjava Ġcon ve v tion Ġsource sets ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( project . multi platform Extension OrNull Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . warn ("$ SCRIPT ING _ LOG _ PREFIX Ġapplied Ġto Ġa Ġnon - JVM Ġproject Ġ$ project , Ġ$ MIS CONFIGURATION _ MESSAGE _ SUFFIX ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Scripts Extensions ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġjava Plugin Convention : ĠJava Plugin Convention , ĊĠĠĠĠĠĠĠ Ġsource SetName : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Plugin Convention . source Sets . find ByName ( source SetName )?. let Ġ{ Ġsource Set Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiscovery Results Configuration Name Ġ= Ġget Discovery Results Configuration Name ( source SetName ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Source Set Ġ= Ġsource Set . get Convention ( K OT LIN _ DSL _ NAME ) Ġas ? ĠKotlin Source Set ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( kotlin Source Set Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . warn ("$ SCRIPT ING _ LOG _ PREFIX Ġkotlin Ġsource Ġset Ġnot Ġfound : Ġ$ project .$ source Set , Ġ$ MIS CONFIGURATION _ MESSAGE _ SUFFIX ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextensions Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiscovery Results Configuration Ġ= Ġproject . configurations . find ByName ( discovery Results Configuration Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( discovery Results Configuration Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . warn ("$ SCRIPT ING _ LOG _ PREFIX Ġdiscovery Ġresults Ġnot Ġfound : Ġ$ project .$ discovery Results Configuration Name , Ġ$ MIS CONFIGURATION _ MESSAGE _ SUFFIX ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Set < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscovery Results Configuration . files . flatMap To ( HashSet ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . read Lines (). filter ( String :: isNotBlank ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Source Set . add Custom Source Files Extensions ( it . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . debug ("$ SCRIPT ING _ LOG _ PREFIX Ġ$ project .$ source Set : Ġdiscovered Ġscript Ġextensions : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Source Set . kotlin . filter . include Ġ{ Ġit . file . extension Ġin Ġextensions Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġconst Ġval ĠMAIN _ CONFIGURATION _ NAME Ġ= Ġ" kotlin Script Def " Ċ private Ġconst Ġval ĠRESULT S _ CONFIGURATION _ SUFFIX Ġ= Ġ" Extensions " Ċ Ċ private Ġfun Ġget Discovery Classpath Configuration Name ( source SetName : ĠString ): ĠString Ġ= Ġwhen Ġ( source SetName ) Ġ{ ĊĠĠĠ Ġ" main " Ġ-> ĠMAIN _ CONFIGURATION _ NAME ĊĠĠĠ Ġelse Ġ-> Ġ"$ source SetName ${ MAIN _ CONFIGURATION _ NAME . capitalize () }" Ċ } Ċ Ċ private Ġfun Ġget Discovery Results Configuration Name ( source SetName : ĠString ): ĠString Ġ= ĊĠĠĠ Ġget Discovery Classpath Configuration Name ( source SetName ) Ġ+ ĠRESULT S _ CONFIGURATION _ SUFFIX ĊĊĊ Ċ private Ġfun Ġconfigure Discovery Transformation ( ĊĠĠĠ Ġproject : ĠProject , ĊĠĠĠ Ġdiscovery Configuration : ĠConfiguration , ĊĠĠĠ Ġdiscovery Results Configuration Name : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġproject . configurations . maybe Create ( discovery Results Configuration Name ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġis Can Be Cons umed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Gradle Version At Least ( MIN _ SUPPORTED _ GRAD LE _ MAJOR _ VERSION , ĠMIN _ SUPPORTED _ GRAD LE _ MINOR _ VERSION )) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . dependencies . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscovery Results Configuration Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . with Registered Discover Script Extensions Transform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscovery Configuration . discover Script Extensions Files () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ// Ġotherwise Ġthe Ġwarning Ġshould Ġalready Ġbe Ġreported Ġin Ġthe ĠScript ing Gradle Sub plugin . apply Ċ } Ċ Ċ internal Ġclass ĠDis cover Script Extensions Transform Ġ: ĠArtifact Transform () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġtransform ( input : ĠFile ): ĠList < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefinitions Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Definitions From Classpath Discovery Source ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( input ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Jvm Script ing Host Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrint ing Message Collector ( System . out , ĠMessage Renderer . WITHOUT _ PATHS , Ġfalse ). reporter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). definitions ĊĠĠĠĠĠĠĠ Ġval Ġextensions Ġ= Ġdefinitions . map To ( array ListOf ()) Ġ{ Ġit . file Extension Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( extensions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= Ġoutput Directory . resolve ("${ input . name Without Extension }. dis covered Scripts Extensions . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile . write Text ( extensions . join ToString ("\ n ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( outputFile ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġempty List () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ċ fun ĠProject . register Discover Script Extensions Transform () Ġ{ ĊĠĠĠ Ġdependencies . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Transform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom . attribute ( artifact Type , Ġ" jar ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto . attribute ( artifact Type , Ġscript Files Extensions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Transform ( Discover Script Extensions Transform :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġregister Transform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom . attribute ( artifact Type , Ġ" classes ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto . attribute ( artifact Type , Ġscript Files Extensions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Transform ( Discover Script Extensions Transform :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ċ fun Ġ< T > ĠProject . with Registered Discover Script Extensions Transform ( block : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠ Ġif Ġ(! project . extensions . extra Properties . has (" Discover Script Extensions Transform ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Discover Script Extensions Transform () ĊĠĠĠĠĠĠĠ Ġproject . extensions . extra Properties [" Discover Script Extensions Transform "] Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġblock () Ċ } Ċ Ċ private Ġval Ġartifact Type Ġ= ĠAttribute . of (" artifact Type ", ĠString :: class . java ) Ċ Ċ private Ġval Ġscript Files Extensions Ġ= Ġ" script - files - extensions " Ċ Ċ private Ċ fun ĠConfiguration . discover Script Extensions Files () Ġ= ĊĠĠĠ Ġincoming . artifact View Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . attribute ( artifact Type , Ġscript Files Extensions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. artifacts . artifact Files ĊĊ Ċ class ĠScript ing Kotlin Gradle Sub plugin Ġ: ĠKotlin Gradle Sub plugin < Abstract Compile > Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS CRIPT ING _ AR TI FACT _ NAME Ġ= Ġ" kotlin - script ing - compiler " ĊĊĠĠĠĠĠĠĠ Ġval ĠS CRIPT _ DEFINITION S _ OPTION Ġ= Ġ" script - definitions " ĊĠĠĠĠĠĠĠ Ġval ĠS CRIPT _ DEFINITION S _ CLAS SPATH _ OPTION Ġ= Ġ" script - definitions - classpath " ĊĠĠĠĠĠĠĠ Ġval ĠDISABLE _ SCRIPT _ DEFINITION S _ FROM _ CL SS PATH _ OPTION Ġ= Ġ" disable - script - definitions - from - classpath " ĊĠĠĠĠĠĠĠ Ġval ĠLE G ACY _ SCRIPT _ RESOL VER _ ENVIRONMENT _ OPTION Ġ= Ġ" script - resolver - environment " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Applicable ( project : ĠProject , Ġtask : ĠAbstract Compile ) Ġ= ĊĠĠĠĠĠĠĠ Ġtask Ġis ĠKotlin Jvm Compile Ġ&& ĠScript ing Gradle Sub plugin . isEnabled ( project ) ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġkotlin Compile : ĠAbstract Compile , ĊĠĠĠĠĠĠĠ Ġjava Compile : ĠAbstract Compile ?, ĊĠĠĠĠĠĠĠ Ġvariant Data : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġandroid Project Handler : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġkotlin Compilation : ĠKotlin Compilation < *> ? ĊĠĠĠ Ġ): ĠList < Sub plugin Option > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Script ing Gradle Sub plugin . isEnabled ( project )) Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġval Ġscripting Extension Ġ= Ġproject . extensions . findBy Type ( Script ing Extension :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġproject . extensions . create (" kotlin Script ing ", ĠScript ing Extension :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġmutable ListOf < Sub plugin Option >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( script Def Ġin Ġscripting Extension . my Script Definitions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠSub plugin Option ( SCRIPT _ DEFINITION S _ OPTION , Ġscript Def ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( path Ġin Ġscripting Extension . my Script Definitions Classpath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠSub plugin Option ( SCRIPT _ DEFINITION S _ CLAS SPATH _ OPTION , Ġpath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( script ing Extension . my Disable Script Definitions From Classpath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠSub plugin Option ( DISABLE _ SCRIPT _ DEFINITION S _ FROM _ CL SS PATH _ OPTION , Ġ" true ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( pair Ġin Ġscripting Extension . my Script Resolver Environment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ+= ĠSub plugin Option ( LEG ACY _ SCRIPT _ RESOL VER _ ENVIRONMENT _ OPTION , Ġ"${ pair . key } =${ pair . value }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Compiler Plugin Id () Ġ= Ġ" kotlin . script ing " ĊĠĠĠ Ġoverride Ġfun Ġget Plugin Artifact (): ĠSub plugin Artifact Ġ= ĊĠĠĠĠĠĠĠ ĠJetBrains Sub plugin Artifact ( artifactId Ġ= ĠS CRIPT ING _ AR TI FACT _ NAME ) Ċ } Ċ