package Ġeu . k 5 . soap ui . cmd Ċ Ċ import Ġcom . be ust . j command er . J Command er Ċ import Ġcom . be ust . j command er . Parameter Ċ import Ġeu . k 5 . soap ui . streams . jax b . Jax b Loader Ċ import Ġeu . k 5 . soap ui . streams . model . test . S uu TestCase Ċ import Ġeu . k 5 . soap ui . streams . model . test . S uu TestSuite Ċ import Ġeu . k 5 . soap ui . transform . Transformation Result Ċ import Ġeu . k 5 . soap ui . transform . kar ate . Kar ate Generator Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths ĊĊ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġgenerate Ġ= ĠGenerate Kar ate () ĊĊĠĠĠ ĠJ Command er . newBuilder (). add Object ( generate ). build (). parse (* args ) ĊĊĠĠĠ Ġgenerate . execute () Ċ } Ċ Ċ class ĠGenerate Kar ate Ġ{ ĊĊĠĠĠ Ġ@ Parameter ( names Ġ= Ġ[" - input "], Ġrequired Ġ= Ġtrue ) ĊĠĠĠ Ġvar Ġinput : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Parameter ( names Ġ= Ġ[" - target "], Ġrequired Ġ= Ġtrue ) ĊĠĠĠ Ġvar Ġoutput : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Parameter ( names Ġ= Ġ[" suite Filter "]) ĊĠĠĠ Ġvar Ġsuite Filter : ĠString Ġ= Ġ" .* " ĊĊĠĠĠ Ġ@ Parameter ( names Ġ= Ġ[" case Filter "]) ĊĠĠĠ Ġvar Ġcase Filter Ġ= Ġ" .* " ĊĊĠĠĠ Ġfun Ġexecute () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsu Project Ġ= ĠJ ax b Loader (). load ( Paths . get ( input )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Cases Ġ= Ġsu Project . test Su ites ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( this :: accept ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . test Cases Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( this :: accept ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach ( this :: generate ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate ( testCase : ĠS uu TestCase ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠKar ate Generator (). transform ( testCase ) ĊĠĠĠĠĠĠĠ Ġprintln (" Writing Ġ" Ġ+ Ġresult . test Suite Ġ+ Ġ":" Ġ+ Ġresult . testCase ) ĊĠĠĠĠĠĠĠ Ġwrite Result ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Result ( result : ĠTransformation Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPaths . get ( output ). resolve ( escape Path ( result . test Suite )). resolve ( escape Path ( result . testCase )) ĊĠĠĠĠĠĠĠ ĠFiles . create Directories ( path ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( artifact Ġin Ġresult . artifacts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartifact Path Ġ= Ġpath . resolve ( artifact . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Writing Ġ${ artifact Path . to AbsolutePath () }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . write ( artifact Path , Ġartifact . content . toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġescape Path ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpath ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccept ( suite : ĠS uu TestSuite ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuite . name . matches ( Regex ( suite Filter )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccept ( testCase : ĠS uu TestCase ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠtestCase . name . matches ( Regex ( case Filter )) ĊĠĠĠ Ġ} Ċ }