@ file : Jvm Name (" Code gen Main ") Ċ Ċ package Ġcom . w car mon . codegen Ċ Ċ import Ġcom . w car mon . codegen . config . Code gen Beans Ċ import Ġcom . w car mon . codegen . config . F reem ark er Beans Ċ import Ġcom . w car mon . codegen . config . JSON Beans Ċ import Ġcom . w car mon . codegen . log . structured Error Ċ import Ġcom . w car mon . codegen . log . structured Info Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġorg . springframework . boot . Banner Ċ import Ġorg . springframework . boot . Spring Application Ċ import Ġorg . springframework . boot . Web Application Type Ċ import Ġorg . springframework . boot . builder . Spring Application Builder Ċ import Ġjava . nio . file . Paths Ċ import Ġkotlin . system . exit Process Ċ Ċ private Ġval ĠLOG Ġ= ĠLog Manager . getLogger (" com . w car mon . codegen . Code gen Main ") ĊĊ Ċ /** Ċ Ġ* ĠEntry Ġpoint Ċ Ġ* Ċ Ġ* ĠPass Ġexactly Ġ 1 - directory , Ġas Ġcommand Ġline Ġarg . Ċ Ġ* Ċ Ġ* ĠDirectory Ġmust Ġcontain Ġat - least - 1 Ġentity Ġjson Ġfile Ċ Ġ* ĠSee Ġ[ PATTERN _ FOR _ ENTITY _ FILE ] Ċ Ġ* Ċ Ġ* ĠDirectory Ġmust Ġcontain Ġat - least - 1 Ġcode Ġgenerate Ġrequest Ġjson Ġfile Ċ Ġ* ĠSee Ġ[ PATTERN _ FOR _ GEN _ REQ _ FILE ] Ċ Ġ*/ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠ Ġif Ġ( args . size Ġ!= Ġ 1 ) Ġ{ ĊĠĠĠ Ġval Ġexit Code Ġ= Ġ 1 ĊĠĠĠ ĠLOG . structured Error ( ĊĠĠĠĠĠ Ġ" Pass Ġexactly Ġ 1 Ġargument ", ĊĠĠĠĠĠ Ġ" args " Ġto Ġargs , ĊĠĠĠĠĠ Ġ" details " Ġto Ġ" Pass Ġdirectory Ġcontaining Ġrequest Ġjson Ġfiles ", ĊĠĠĠĠĠ Ġ" exit Code " Ġto Ġexit Code , ĊĠĠĠĠĠ Ġ" next Step " Ġto Ġ" termin ating ", ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġexit Process ( exit Code ) ĊĠ Ġ} ĊĊĠ Ġval Ġconfig Root Ġ= ĠPaths . get ( args [ 0 ]). normalize (). to AbsolutePath () ĊĠ ĠLOG . structured Info ( ĊĠĠĠ Ġ" Starting Ġcodegen ", ĊĠĠĠ Ġ" config Root " Ġto Ġconfig Root , ĊĠ Ġ) ĊĊĠ Ġval Ġctx Ġ= ĠSpring Application Builder ( Code Generator App :: class . java ) ĊĠĠĠ Ġ. banner Mode ( Banner . Mode . OFF ) ĊĠĠĠ Ġ. headless ( true ) ĊĠĠĠ Ġ. log Startup Info ( true ) ĊĠĠĠ Ġ. profiles (" default ") ĊĠĠĠ Ġ. web ( Web Application Type . NONE ) ĊĠĠĠ Ġ. sources ( ĊĠĠĠĠĠ ĠCode gen Beans :: class . java , ĊĠĠĠĠĠ ĠF reem ark er Beans :: class . java , ĊĠĠĠĠĠ ĠJSON Beans :: class . java , ĊĠĠĠ Ġ) ĊĠĠĠ Ġ. build () ĊĠĠĠ Ġ. run (* args ) ĊĊĠ Ġtry Ġ{ ĊĠĠĠ Ġctx . getBean ( Code Generator App :: class . java ) ĊĠĠĠĠĠ Ġ. run ( config Root ) ĊĊĠĠĠ ĠLOG . info (" Success ") ĊĊĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠ Ġval Ġexit Code Ġ= Ġ 2 ĊĠĠĠ ĠLOG . structured Error ( ĊĠĠĠĠĠ Ġ" Failed Ġto Ġrun Ġgenerator ", ĊĠĠĠĠĠ Ġ" args " Ġto Ġargs , ĊĠĠĠĠĠ Ġ" config Root " Ġto Ġconfig Root , ĊĠĠĠĠĠ Ġ" exception " Ġto Ġex , ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠSpring Application . exit ( ctx , Ġ{ Ġ 0 Ġ}) ĊĠĠĠ Ġexit Process ( exit Code ) ĊĊĠ Ġ} Ġfinally Ġ{ ĊĠĠĠ Ġctx . close () ĊĠ Ġ} ĊĊĠ Ġexit Process ( 0 ) Ċ } Ċ