package Ġnorm . cli Ċ Ċ import Ġcom . github . aj alt . cli kt . core . Cli kt Command Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . argument Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . multiple Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . unique Ċ import Ġcom . github . aj alt . cli kt . parameters . options .* Ċ import Ġcom . github . aj alt . cli kt . parameters . types . file Ċ import Ġnorm . api . Norm Api Ċ import Ġnorm . fs . IO Ċ import Ġnorm . fs . glob Search Ċ import Ġnorm . util . with Pg Connection Ċ import Ġjava . io . File ĊĊ Ċ /** Ċ Ġ* ĠEntry Ġpoint Ġ- ĠThe Ġmain Ġfunction Ċ Ġ*/ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= ĠNorm Cli (). main ( args ) ĊĊ Ċ /** Ċ Ġ* ĠImplementation Ġof ĠCLI Ġusing ĠNorm ĠAPI Ċ Ġ* Ċ Ġ* ĠCan Ġuse Ġenv Ġvariable Ġto Ġpass Ġin Ġsensitive Ġinformation Ċ Ġ*/ Ċ class ĠNorm Cli Ġ: ĠCli kt Command ( Ġ// Ġcommand Ġname Ġis Ġinferred Ġas Ġnorm - cli ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" norm - codegen ", ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerates ĠKotlin ĠSource Ġfiles Ġfor Ġgiven ĠSQL Ġfiles Ġusing Ġthe ĠPostgres Ġdatabase Ġconnection ĊĠĠĠĠĠĠĠ Ġ""" Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġjdbc Url Ġby Ġoption ("- j ", Ġ"-- jdbc - url ", Ġhelp Ġ= Ġ" JDBC Ġconnection ĠURL Ġ( can Ġuse Ġenv Ġvar ĠPG _ JDBC _ URL )", Ġenv var Ġ= Ġ" PG _ JDBC _ URL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default (" jdbc : postgresql :// localhost / postgres ") ĊĊĠĠĠ Ġprivate Ġval Ġusername Ġby Ġoption ("- u ", Ġ"-- username ", Ġhelp Ġ= Ġ" Username Ġ( can Ġuse Ġenv Ġvar ĠPG _ USERNAME )", Ġenv var Ġ= Ġ" PG _ USERNAME ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default (" postgres ") ĊĊĠĠĠ Ġprivate Ġval Ġpassword Ġby Ġoption ("- p ", Ġ"-- password ", Ġhelp Ġ= Ġ" Password Ġ( can Ġuse Ġenv Ġvar ĠPG _ PASSWORD )", Ġenv var Ġ= Ġ" PG _ PASSWORD ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default ("") ĊĊĠĠĠ Ġprivate Ġval ĠbasePath Ġby Ġoption ("- b ", Ġ"-- base - path ", Ġhelp Ġ= Ġ" Ġrelative Ġpath Ġfrom Ġthis Ġdir Ġwill Ġbe Ġused Ġto Ġinfer Ġpackage Ġname ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( can Be File Ġ= Ġfalse , Ġcan Be Dir Ġ= Ġtrue , Ġmust Exist Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default ( File (". ")) Ġ// ĠCurrent Ġworking Ġdir ĊĊĠĠĠ Ġprivate Ġval Ġinput Files As Opts Ġby Ġoption ("- f ", Ġ"-- file ", Ġhelp Ġ= Ġ"[ Multiple ] ĠSQL Ġfiles , Ġthe Ġfile Ġpath Ġrelative Ġto Ġbase Ġpath Ġ(- b ) Ġwill Ġbe Ġused Ġto Ġinfer Ġpackage Ġname ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( can Be File Ġ= Ġtrue , Ġcan Be Dir Ġ= Ġfalse , Ġmust Exist Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. multiple () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. unique () ĊĊĠĠĠ Ġprivate Ġval Ġsql Files Ġby Ġargument () Ġ// Ġgive Ġmeaningful Ġname Ġfor ĠCLI Ġhelp Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( can Be File Ġ= Ġtrue , Ġcan Be Dir Ġ= Ġfalse , Ġmust Exist Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. multiple () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. unique () ĊĊĠĠĠ Ġprivate Ġval Ġinput Dir Ġby Ġoption ("- d ", Ġ"-- in - dir ", Ġhelp Ġ= Ġ" Dir Ġcontaining Ġ. sql Ġfiles , Ġrelative Ġpath Ġfrom Ġthis Ġdir Ġwill Ġbe Ġused Ġto Ġinfer Ġpackage Ġname ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( can Be File Ġ= Ġfalse , Ġcan Be Dir Ġ= Ġtrue , Ġmust Exist Ġ= Ġtrue ) ĊĊĠĠĠ Ġprivate Ġval Ġout Dir Ġby Ġoption ("- o ", Ġ"-- out - dir ", Ġhelp Ġ= Ġ" Output Ġdir Ġwhere Ġsource Ġshould Ġbe Ġgenerated ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( can Be File Ġ= Ġfalse , Ġcan Be Dir Ġ= Ġtrue , Ġmust Exist Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. required () ĊĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ= Ġwith Pg Connection ( jdbc Url , Ġusername , Ġpassword ) Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġnorm Api Ġ= ĠNorm Api ( connection ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġdir Ġis Ġprovided , Ġrel ativ ize Ġto Ġitself ĊĠĠĠĠĠĠĠ Ġinput Dir ?. let Ġ{ Ġdir Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġglob Search ( dir , Ġ" **. sql "). forEach Ġ{ Ġsql File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO ( sql File , Ġdir , Ġout Dir ). process ( norm Api :: generate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġif Ġfile Ġlist Ġis Ġexplicitly Ġprovided , Ġit Ġis Ġrelative Ġto ĠbasePath ĊĠĠĠĠĠĠĠ Ġ( input Files As Opts Ġ+ Ġsql Files ). forEach Ġ{ Ġsql File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO ( sql File , ĠbasePath , Ġout Dir ). process ( norm Api :: generate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ