package Ġorg . spe k framework . ide Ċ Ċ import Ġcom . xen om ach ina . arg parser . Arg Parser Ċ import Ġcom . xen om ach ina . arg parser . main Body Ċ import Ġorg . spe k framework . spe k 2 . runtime . Jvm Discovery Context Factory Ċ import Ġorg . spe k framework . spe k 2 . runtime . Spe k Runtime Ċ import Ġorg . spe k framework . spe k 2 . runtime . execution . Discovery Request Ċ import Ġorg . spe k framework . spe k 2 . runtime . execution . Execution Request Ċ import Ġorg . spe k framework . spe k 2 . runtime . scope . Path Builder Ċ import Ġkotlin . system . exit Process Ċ Ċ class ĠSpe k 2 Console Launcher Ġ{ ĊĠĠĠ Ġfun Ġrun ( args : ĠLaunch er Args ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpaths Ġ= Ġargs . paths . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath Builder . parse ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠJ vm Discovery Context Factory . create ( args . source Dirs . toList ()) ĊĠĠĠĠĠĠĠ Ġval Ġdiscovery Request Ġ= ĠDiscovery Request ( context , Ġpaths ) ĊĊĠĠĠĠĠĠĠ Ġval Ġruntime Ġ= ĠSpe k Runtime () ĊĊĠĠĠĠĠĠĠ Ġval Ġdiscovery Result Ġ= Ġruntime . discover ( discovery Request ) ĊĠĠĠĠĠĠĠ Ġval Ġexecution Request Ġ= ĠExecution Request ( discovery Result . roots , ĠService Message Adapter ()) ĊĠĠĠĠĠĠĠ Ġruntime . execute ( execution Request ) ĊĠĠĠĠĠĠĠ Ġ// Ġforces Ġthe Ġj vm Ġto Ġshutdown Ġeven Ġif Ġthere Ġare Ġnon - daemon Ġthreads Ġrunning . ĊĠĠĠĠĠĠĠ Ġ// ĠIde ally Ġlibraries Ġshould Ġnot Ġleave Ġnon - daemon Ġthreads Ġrunning Ġafter Ġexit , Ġunfortunately , ĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġquite Ġcommon Ġeven Ġwith Ġnewer Ġlibraries . ĊĠĠĠĠĠĠĠ Ġexit Process ( 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLaunch er Args ( parser : ĠArg Parser ) Ġ{ ĊĠĠĠ Ġval Ġsource Dirs Ġby Ġparser . adding ("-- source Dirs ", Ġhelp =" Spec Ġsource Ġdirs ") ĊĠĠĠ Ġval Ġpaths Ġby Ġparser . adding ("-- paths ", Ġhelp Ġ= Ġ" Spe k Ġpaths Ġto Ġexecute ") Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= Ġmain Body Ġ{ ĊĠĠĠ Ġval Ġlauncher Args Ġ= ĠArg Parser ( args ). parse Into (:: Launcher Args ) ĊĠĠĠ ĠSpe k 2 Console Launcher (). run ( launcher Args ) Ċ } Ċ