// ĠSPDX - License - Identifier : ĠBSD - 3 - Clause Ċ package Ġorg . isl ando ft ex . ar ara . dsl . script ing Ċ Ċ import Ġorg . isl ando ft ex . ar ara . core . session . Environment Ċ import Ġorg . isl ando ft ex . ar ara . dsl . language . DSL Instance Ċ import Ġjava . io . File Ċ import Ġjava . net . Jar URLConnection Ċ import Ġjava . net . URL Ċ import Ġjava . security . Message Digest Ċ import Ġkotlin . script . experimental . api . Script Accepted Location Ċ import Ġkotlin . script . experimental . api . Script Compilation Configuration Ċ import Ġkotlin . script . experimental . api . Script Evaluation Configuration Ċ import Ġkotlin . script . experimental . api . Source Code Ċ import Ġkotlin . script . experimental . api . accepted Locations Ċ import Ġkotlin . script . experimental . api . default Imports Ċ import Ġkotlin . script . experimental . api . host Configuration Ċ import Ġkotlin . script . experimental . api . ide Ċ import Ġkotlin . script . experimental . api . implicit Re ceiv ers Ċ import Ġkotlin . script . experimental . host . Script ing Host Configuration Ċ import Ġkotlin . script . experimental . jvm . compilation Cache Ċ import Ġkotlin . script . experimental . jvm . dependencies From Class Context Ċ import Ġkotlin . script . experimental . jvm . dependencies From Current Context Ċ import Ġkotlin . script . experimental . jvm . jvm Ċ import Ġkotlin . script . experimental . jvm host . Compiled Script J ars Cache Ċ Ċ /** Ċ Ġ* ĠThe Ġcompiler Ġconfiguration for Ġar ara 's Ġconfiguration Ġscripts . Ċ Ġ* Ċ Ġ* ĠMajor Ġinflu ences Ġfrom Ċ Ġ* Ġhttps :// github . com / Kotlin / kotlin - script - examples / blob / master / jvm / simple - main - k ts / simple - main - k ts / src / main / kotlin / org / jetbrains / kotlin / script / examples / simple Main K ts / script Def . kt Ċ Ġ*/ Ċ class ĠAr ara Script Compilation Configuration Ġ: ĠScript Compilation Configuration ({ ĊĠĠĠ Ġdefault Imports (" java . io .* ") ĊĠĠĠ Ġimplicit Re ceiv ers ( Rule Methods :: class , ĠDSL Instance :: class ) ĊĠĠĠ Ġj vm Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Resource Ġ= ĠAr ara Script Compilation Configuration :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. name . replace ('.', Ġ'/') Ġ+ Ġ". class " ĊĠĠĠĠĠĠĠ Ġval Ġthis Jar File Ġ= ĠAr ara Script Compilation Configuration :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. class Loader . getResource ( key Resource )?. to Containing Jar OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( this Jar File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies From Current Context ( this Jar File . name , Ġwhole Classpath Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies From Class Context ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ara Script Compilation Configuration :: class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhole Classpath Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġide Ġ{ ĊĠĠĠĠĠĠĠ Ġaccepted Locations ( Script Accepted Location . Every where ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġhost Configuration ( ĊĠĠĠĠĠĠĠ ĠScript ing Host Configuration Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment . getSystem Property OrNull (" java . io . tmpdir ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let (:: File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . exists () Ġ&& Ġit . isDirectory Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( it , Ġ" org . isl ando ft ex . ar ara . k ts . cache ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġmkdir () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation Cache ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp iled Script J ars Cache Ġ{ Ġscript , Ġcompilation Configuration Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . resolve ( compiled Script Unique Name ( script , Ġcompilation Configuration ) Ġ+ Ġ". jar ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ }) Ċ Ċ class ĠAr ara Script Evaluation Configuration Ġ: ĠScript Evaluation Configuration ({ ĊĠĠĠ Ġimplicit Re ceiv ers ( Rule Methods , ĠDSL Instance ) Ċ }) Ċ Ċ private Ġfun Ġcompiled Script Unique Name ( ĊĠĠĠ Ġscript : ĠSource Code , ĊĠĠĠ Ġscript Compilation Configuration : ĠScript Compilation Configuration Ċ ): ĠString Ġ{ ĊĠĠĠ Ġval Ġdigest Wrapper Ġ= ĠMessage Digest . getInstance (" MD 5 ") ĊĠĠĠ Ġdigest Wrapper . update ( script . text . toByteArray ()) ĊĠĠĠ Ġscript Compilation Configuration . not Transient Data . entries ĊĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . key . name Ġ} ĊĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigest Wrapper . update ( it . key . name . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigest Wrapper . update ( it . value . toString (). toByteArray ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġdigest Wrapper . digest (). to HexString () Ċ } Ċ Ċ private Ġfun ĠByteArray . to HexString (): ĠString Ġ= Ġjoin ToString ("", Ġtransform Ġ= Ġ{ Ġ"% 0 2 x ". format ( it ) Ġ}) Ċ Ċ internal Ġfun ĠURL . to Containing Jar OrNull (): ĠFile ? Ġ= ĊĠĠĠ Ġif Ġ( protocol Ġ== Ġ" jar ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ( open Connection () Ġas ? ĠJar URLConnection )?. jar File URL ?. to File OrNull () ĊĠĠĠ Ġ} Ġelse Ġnull Ċ Ċ internal Ġfun ĠURL . to File OrNull () Ġ= ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( to URI ()) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . net . UR ISyntaxException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( protocol Ġ!= Ġ" file ") Ġnull ĊĠĠĠĠĠĠĠ Ġelse ĠFile ( file ) ĊĠĠĠ Ġ} Ċ