package Ġcom . ant wer kz . quarkus . pic oc li Ċ Ċ import Ġorg . zer ot urn around . exec . Process Executor Ċ import Ġpic oc li . CommandLine Ċ import Ġpic oc li . CommandLine . Option Ċ import Ġpic oc li . CommandLine . Parameters Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ Ċ @ CommandLine . Command ( name Ġ= Ġ" byte code ") Ċ class ĠByteCode Command Ġ: ĠRunnable Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTARGET Ġ= ĠFile (" target / byte code ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Option ( names Ġ= Ġ[" - d "], ĠdefaultValue Ġ= Ġ" false ") ĊĠĠĠ Ġvar Ġdebug : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Option ( names Ġ= Ġ[" - l ", Ġ"-- local "], ĠdefaultValue Ġ= Ġ" true ") ĊĠĠĠ Ġvar Ġlocal : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ@ Option ( names Ġ= Ġ[" - v "], ĠdefaultValue Ġ= Ġ" true ") ĊĠĠĠ Ġvar Ġverbose : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ@ Option ( names Ġ= Ġ[" - m ", Ġ"-- modules "], Ġsplit =", ", Ġdescription Ġ= Ġ[" List Ġof Ġmodules Ġto Ġbuild Ġin Ġqu ark us Ġbefore Ġbuilding Ġthe Ġlocal Ġproject "]) ĊĠĠĠ Ġvar Ġmodules Ġ= ĠlistOf < String >() ĊĊĠĠĠ Ġ@ Parameters ( param Label Ġ= Ġ" entity ", Ġdescription Ġ= Ġ[" One Ġor Ġmore Ġentities Ġto Ġcatalog "]) ĊĠĠĠ Ġvar Ġentities Ġ= ĠlistOf < String >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠTARGET . mkdir s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Install Command Ġ= ĠQ Install Command ( modules ) ĊĠĠĠĠĠĠĠ Ġq Install Command . debug Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġq Install Command . run () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( local ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Command Ġ= ĠQ Install Command ( listOf ("./ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Command . debug Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Command . run () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( entity Ġin Ġentities ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin ĠlistOf (" main ", Ġ" test ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( source Ġin ĠSource . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory Ġ= ĠFile ( source . dir ( type )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( directory . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory . walk () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġf Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" f . name Without Extension Ġ= Ġ${ f . name Without Extension }") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" f . name Without Extension . startsWith ( entity ) Ġ= Ġ${ f . name Without Extension . startsWith ( entity )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . name Without Extension . startsWith ( entity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdump ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Package ( it : ĠFile ) Ġ= Ġit . read Lines () ĊĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġline Ġ-> Ġline . startsWith (" package ") Ġ} ĊĠĠĠĠĠĠĠ Ġ. substring After (" Ġ") ĊĠĠĠĠĠĠĠ Ġ. substring Before ("; ") ĊĊĠĠĠ Ġprivate Ġfun Ġdump ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġread Package ( file ) ĊĠĠĠĠĠĠĠ Ġval Ġbase Name Ġ= Ġ"$ packageName .${ file . name Without Extension }" ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( suffix Ġin ĠlistOf ("", Ġ"\ $ Companion ", Ġ" Dao ", Ġ" Repository ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġbase Name Ġ+ Ġsuffix ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Sc anning Ġ$ className ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase FileName Ġ= Ġfile . name Without Extension Ġ+ Ġsuffix ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! output ( File (" target / classes "), ĠclassName , ĠFile ( TARGET , Ġ"$ base FileName . txt "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ( File (" target / test - classes "), ĠclassName , ĠFile ( TARGET , Ġ"$ base FileName . txt ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ( File (" target / quarkus - app / quarkus / transformed - byte code . jar "), ĠclassName , ĠFile ( TARGET , Ġ"$ base FileName - quarkus . txt ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġjav ap ( rootDir : ĠFile , ĠclassName : ĠString , ĠoutputFile : ĠFile ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( debug ) Ġprintln (" ĠĠ Ġ\\ --- Ġ ĠLooking Ġin Ġ$ rootDir ") ĊĠĠĠĠĠĠĠ Ġval Ġexit Value Ġ= ĠProcess Executor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. command (" jav ap ", Ġ* options (), Ġ"- classpath ", Ġroot Dir . path , ĠclassName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Output ( File OutputStream ( outputFile )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exit Value ĊĊĠĠĠĠĠĠĠ Ġif Ġ( exit Value Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġexit Value Ġ== Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġoptions (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠarrayOf ("- c ", Ġ"- s ", Ġ"- p ") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( verbose ) Ġoptions Ġ+ Ġ"- v " Ġelse Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġoutput ( rootDir : ĠFile , ĠclassName : ĠString , ĠoutputFile : ĠFile ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjav ap ( rootDir , ĠclassName , ĠoutputFile ) ĊĠĠĠ Ġ} Ċ } Ċ