package Ġx iao Language . cli Ċ Ċ import Ġx iao Language . checker . Checker Ċ import Ġx iao Language . exception . Command Error Ċ import Ġx iao Language . compiler . Compiler Ċ import Ġjava . io . File Ċ Ċ class ĠCommandLine Interface ( private Ġval Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( args . isNotEmpty ()) Ġrun () ĊĠĠĠĠĠĠĠ Ġelse Ġcommand Run () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠSub command ( val Ġstr : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBUILD (" build "), ĊĠĠĠĠĠĠĠ ĠRUN (" run ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsub command Ġ= Ġargs [ 0 ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sub command Ġin ĠSub command . values (). map Ġ{ Ġit . str Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sub command ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSub command . RUN . str Ġ-> Ġcommand Run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSub command . BUILD . str Ġ-> Ġcommand Build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġthrow ĠCommand Error (" command Ġ'$ sub command ' Ġis Ġnot Ġdefined ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcommand Build () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( args . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġargs [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler ( File ( filePath )). compile () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġthrow ĠCommand Error (" missing Ġfile Ġpath ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcommand Run () Ġ{ ĊĊĠĠĠ Ġ} Ċ }