/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 8 ĠJul ian ĠEx en ber ger Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĠĠ Ġ` * ĠĠ Ġ`[ ` http :// www . apache . org / licenses / LICENSE - 2 . 0 `]( http :// www . apache . org / licenses / LICENSE - 2 . 0 ) Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . code stream . util Ċ Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ fun ĠAny ?. stringify (): ĠString Ġ= Ġthis . toString (). trim () ĊĊ Ċ fun ĠString . exec ( dir : ĠFile Ġ= ĠFile ( System . getProperty (" user . dir ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout : ĠLong Ġ= Ġ 6 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Unit : ĠTimeUnit Ġ= ĠTimeUnit . MIN UTES ): ĠPair < Int , ĠString > Ġ{ ĊĠĠĠ Ġval Ġparts Ġ= Ġthis . split (" Ġ") ĊĠĠĠ Ġval Ġprocess Ġ= ĠProcess Builder ( parts ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Output ( Process Builder . Redirect . IN HER IT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Error ( Process Builder . Redirect . IN HER IT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory ( dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠ Ġval Ġoutput Ġ= Ġprocess . inputStream . buffered Reader (). read Text () ĊĠĠĠ Ġval Ġcompleted Ġ= Ġprocess . waitFor ( timeout , Ġtime Unit ) ĊĠĠĠ Ġif Ġ(! completed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPair (- 1 , Ġ" TIMEOUT ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġresult Ġ= Ġprocess . exit Value () ĊĠĠĠ Ġreturn ĠPair ( result , Ġoutput ) Ċ } Ċ Ċ fun ĠString . exec ( dir : ĠFile Ġ= ĠFile ( System . getProperty (" user . dir ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout : ĠLong Ġ= Ġ 6 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Unit : ĠTimeUnit Ġ= ĠTimeUnit . MIN UTES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler : Ġ( String ) Ġ-> ĠUnit ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġparts Ġ= Ġthis . split (" Ġ"). map Ġ{ Ġit . trim () Ġ} ĊĠĠĠ Ġreturn Ġsystem . exec ( parts . to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdir Ġ= Ġdir , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout Ġ= Ġtimeout , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Unit Ġ= Ġtime Unit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler Ġ= Ġhandler ) Ċ } ĊĊ Ċ object ĠStrings Ġ{ ĊĠĠĠ Ġfun ĠisEmpty ( str : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( str Ġ== Ġnull Ġ|| Ġstr . trim (). equals ("")) ĊĠĠĠ Ġ} Ċ }