package Ġio . no isy fox . fox vm . translator Ċ Ċ import Ġpic oc li . CommandLine Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent . Callable Ċ import Ġkotlin . system . exit Process Ċ Ċ @ CommandLine . Command ( ĊĠĠĠ Ġdescription Ġ= Ġ[" Translate Ġthe Ġgiven Ġj ars Ġto ĠC Ġsource Ġcodes ." ], ĊĠĠĠ Ġname Ġ= Ġ" translator ", ĊĠĠĠ Ġmixin Standard Help Options Ġ= Ġtrue , ĊĠĠĠ Ġversion Ġ= Ġ[" 0 . 1 "], ĊĠĠĠ Ġsort Options Ġ= Ġfalse Ċ ) Ċ object ĠTrans lator Command Ġ: ĠCallable < Int > Ġ{ ĊĊĠĠĠ Ġclass ĠEx clusive Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ CommandLine . Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames Ġ= Ġ[" - t ", Ġ"-- rt "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Whether Ġwe Ġare Ġtrans lating ĠF ox VM Ġrt Ġlibrary Ġ( lib fox vm )." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvar Ġis Rt : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ@ CommandLine . Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames Ġ= Ġ[" - r ", Ġ"-- runtime Classpath "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsplit Ġ= Ġ"\ ${ sys : path . separator }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Runtime Ġclasspath Ġthat Ġwon 't Ġbe Ġtranslated .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" A Ġ\ ${ sys : path . separator } Ġseparated Ġlist Ġof Ġdirectories , ĠJ AR Ġarch ives , Ġand ĠZIP Ġarch ives Ġto Ġsearch Ġfor Ġclass Ġfiles ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvar Ġruntime Classpath : ĠArray < File >? Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ CommandLine . Arg Group ( exclusive Ġ= Ġtrue , Ġmultip licity Ġ= Ġ" 0 .. 1 ") ĊĠĠĠ Ġvar Ġexclusive : ĠEx clusive Ġ= ĠEx clusive () ĊĊĠĠĠ Ġ@ CommandLine . Option ( ĊĠĠĠĠĠĠĠ Ġnames Ġ= Ġ[" - i ", Ġ"-- in Classpath "], ĊĠĠĠĠĠĠĠ Ġsplit Ġ= Ġ"\ ${ sys : path . separator }", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Input Ġclasspath Ġthat Ġneed Ġto Ġbe Ġtranslated .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" A Ġ\ ${ sys : path . separator } Ġseparated Ġlist Ġof Ġdirectories , ĠJ AR Ġarch ives , Ġand ĠZIP Ġarch ives Ġto Ġsearch Ġfor Ġclass Ġfiles ." ĊĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue ĊĠĠĠ Ġ) ĊĠĠĠ Ġlateinit Ġvar Ġin Classpath : ĠArray < File > ĊĊĠĠĠ Ġ@ CommandLine . Option ( ĊĠĠĠĠĠĠĠ Ġnames Ġ= Ġ[" - o ", Ġ"-- out "], ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ[" Path Ġthat Ġthe Ġtranslated Ġcode Ġfiles Ġwill Ġbe Ġwrote Ġto ." ], ĊĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue ĊĠĠĠ Ġ) ĊĠĠĠ Ġlateinit Ġvar Ġoutput Path : ĠFile ĊĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ ĠTrans lator ( exclusive . is Rt , exclusive . runtime Classpath Ġ?: Ġempty Array (), Ġin Classpath , Ġoutput Path ). execute () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġexit Code Ġ= ĠCommandLine ( Translator Command ). execute (* args ) ĊĠĠĠ Ġexit Process ( exit Code ) Ċ } Ċ