package Ġk ts Ċ Ċ import Ġjava . io . File Ċ Ċ inline Ġfun Ġkotlin c ( block : ĠKotlin c Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġk tc Ġ= ĠKotlin C () ĊĠĠĠ ĠKotlin c Builder ( kt c ). block () ĊĠĠĠ Ġk tc () Ċ } Ċ Ċ class ĠKotlin C ( override Ġval Ġcmd : ĠString Ġ= Ġ" kotlin c ") Ġ: ĠCmd < Kotlin c Builder > Ġ{ ĊĊĠĠĠ Ġval Ġclasspath Ġ= ĠArrayList < File >() ĊĠĠĠ Ġvar Ġdst : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġexpression Ġ= Ġ"" ĊĠĠĠ Ġvar Ġinclude Runtime Ġ= Ġfalse ĊĠĠĠ Ġvar Ġjava Parameters Ġ= Ġfalse ĊĠĠĠ Ġvar Ġj dk Home : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġj vm Target Ġ= Ġ- 1 ĊĠĠĠ Ġvar ĠmoduleName Ġ= Ġ"" ĊĠĠĠ Ġvar Ġno J dk Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Reflect Ġ= Ġfalse ĊĠĠĠ Ġvar Ġno Std lib Ġ= Ġfalse ĊĠĠĠ Ġval Ġscript Templates Ġ= ĠArrayList < String >() ĊĠĠĠ Ġvar Ġw Error Ġ= Ġfalse ĊĠĠĠ Ġvar ĠapiVersion Ġ= Ġ"" ĊĠĠĠ Ġvar Ġhelp Ġ= Ġfalse ĊĠĠĠ Ġvar Ġkotlin Home : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlanguage Version Ġ= Ġ- 1 ĊĠĠĠ Ġval Ġplugins Ġ= ĠArrayList < String >() ĊĠĠĠ Ġvar Ġprogress ive Ġ= Ġfalse ĊĠĠĠ Ġvar Ġscript Ġ= Ġ"" ĊĠĠĠ Ġvar Ġnow arn Ġ= Ġfalse ĊĠĠĠ Ġvar Ġverbose Ġ= Ġfalse ĊĠĠĠ Ġvar Ġversion Ġ= Ġfalse ĊĠĠĠ Ġval Ġj vm Options Ġ= ĠJ vm Options () ĊĠĠĠ Ġvar Ġarg File : ĠFile ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġcustom Ġ= ĠArrayList < String >() ĊĊĠĠĠ Ġval Ġsource Files Ġ= ĠArrayList < File >() ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġinvoke ( block : ĠKotlin c Builder . () Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ ĠKotlin c Builder ( this ). block () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcmd Line (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġarray ListOf < String >() ĊĠĠĠĠĠĠĠ Ġif Ġ( classpath . isNotEmpty ()) Ġargs . add ("- cp ", Ġclasspath . join ToString ( File . path Separator )) ĊĠĠĠĠĠĠĠ Ġdst ?. run Ġ{ Ġargs . add ("- d ", Ġabsolute Path ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( expression . isNotEmpty ()) Ġargs . add ("- e ", Ġexpression ) ĊĠĠĠĠĠĠĠ Ġif Ġ( include Runtime ) Ġargs Ġ+= Ġ"- include - runtime " ĊĠĠĠĠĠĠĠ Ġif Ġ( java Parameters ) Ġargs Ġ+= Ġ"- java - parameters " ĊĠĠĠĠĠĠĠ Ġj dk Home ?. run Ġ{ Ġargs . add ("- jdk - home ", Ġabsolute Path ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( jvm Target Ġ!= Ġ- 1 ) Ġargs . add ("- jvm - target ", Ġif Ġ( jvm Target Ġ< Ġ 9 ) Ġ" 1 .$ jvm Target " Ġelse Ġj vm Target ) ĊĠĠĠĠĠĠĠ Ġif Ġ( moduleName . isNotEmpty ()) Ġargs . add ("- module - name ", ĠmoduleName ) ĊĠĠĠĠĠĠĠ Ġif Ġ( no J dk ) Ġargs Ġ+= Ġ"- no - jdk " ĊĠĠĠĠĠĠĠ Ġif Ġ( no Reflect ) Ġargs Ġ+= Ġ"- no - reflect " ĊĠĠĠĠĠĠĠ Ġif Ġ( no Std lib ) Ġargs Ġ+= Ġ"- no - stdlib " ĊĠĠĠĠĠĠĠ Ġif Ġ( script Templates . isNotEmpty ()) Ġargs . add ("- script - templates ", Ġscript Templates . join ToString ("," )) ĊĠĠĠĠĠĠĠ Ġif Ġ( w Error ) Ġargs Ġ+= Ġ"- W error " ĊĠĠĠĠĠĠĠ Ġif Ġ( apiVersion . isNotEmpty ()) Ġargs . add ("- api - version ", ĠapiVersion ) ĊĠĠĠĠĠĠĠ Ġif Ġ( help ) Ġargs Ġ+= Ġ"- h " ĊĠĠĠĠĠĠĠ Ġkotlin Home ?. run Ġ{ Ġargs . add ("- kotlin - home ", Ġabsolute Path ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( language Version Ġ!= Ġ- 1 ) Ġargs . add ("- language - version ", Ġlanguage Version ) ĊĠĠĠĠĠĠĠ Ġif Ġ( plugins . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ+= Ġ"- P " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( plugin Ġin Ġplugins ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ+= Ġ" plugin :$ plugin " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( progress ive ) Ġargs Ġ+= Ġ"- progress ive " ĊĠĠĠĠĠĠĠ Ġif Ġ( script . isNotEmpty ()) Ġargs . add ("- script ", Ġscript ) ĊĠĠĠĠĠĠĠ Ġif Ġ( now arn ) Ġargs Ġ+= Ġ"- now arn " ĊĠĠĠĠĠĠĠ Ġif Ġ( verbose ) Ġargs Ġ+= Ġ"- verbose " ĊĠĠĠĠĠĠĠ Ġif Ġ( version ) Ġargs Ġ+= Ġ"- version " ĊĠĠĠĠĠĠĠ Ġj vm Options ( args ) ĊĠĠĠĠĠĠĠ Ġarg File ?. run Ġ{ Ġargs Ġ+= Ġ"@ $ absolute Path " Ġ} ĊĊĠĠĠĠĠĠĠ Ġadvanced ( args ) ĊĊĠĠĠĠĠĠĠ Ġargs Ġ+= Ġcustom ĊĊĠĠĠĠĠĠĠ Ġargs Ġ+= Ġsource Files . map Ġ{ Ġit . absolute Path Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġargs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġadvanced Ġ= ĠKotlin c Advanced ( this ) Ċ } Ċ