package Ġsystems . danger . kotlin . tools . shell Ċ Ċ /** Ċ Ġ* ĠShell Executor Ċ Ġ*/ Ċ interface ĠShell Executor Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExecute Ġ[ command ] Ġwith Ġoptional Ġlist Ġof Ġarguments Ġand Ġreturn Ġoutput Ġfrom ĊĠĠĠĠ Ġ* Ġstdout ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcommand Ġthe Ġshell Ġcommand ĊĠĠĠĠ Ġ* Ġ@ param Ġarguments Ġthe Ġlist Ġof Ġarguments Ġto Ġbe Ġpassed Ġto Ġ[ command ] ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstdout Ġoutput ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexecute ( command : ĠString , Ġarguments : ĠList < String > Ġ= Ġempty List ()): ĠString Ċ } Ċ Ċ // ĠInternal Ġimplementation Ġfor ĠShell Executor Ċ internal Ġclass ĠShell Executor Impl Ġ: ĠShell Executor Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( command : ĠString , Ġarguments : ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand With Args Ġ= Ġcommand Ġ+ Ġif Ġ( arguments . isNotEmpty ()) Ġ" Ġ" Ġ+ Ġarguments . join ToString (" Ġ") Ġelse Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= ĠRuntime . get Runtime (). exec ( array Of ("/ bin / bash ", Ġ"- c ", Ġcommand With Args )) ĊĠĠĠĠĠĠĠ Ġprocess . waitFor () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprocess . inputStream . buffered Reader (). read Text () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠShell Executor Factory Ċ Ġ* Ċ Ġ* Ġ@ constructor ĠCreates Ġa ĠShell Executor Factory Ċ Ġ*/ Ċ object ĠShell Executor Factory Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġshell Executor : ĠShell Executor Ġ= ĠShell Executor Impl () ĊĊĠĠĠ Ġ// ĠUseful Ġfor Ġtesting ĊĠĠĠ Ġinternal Ġfun Ġset ( executor : ĠShell Executor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshell Executor Ġ= Ġexecutor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġdanger Ġ[ Shell Executor ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget () Ġ= Ġshell Executor Ċ } Ċ