package Ġorg . id ios apps Ċ Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ class ĠOS Utils Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠWINDO WS : ĠString Ġ= Ġ" windows " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAC OS : ĠString Ġ= Ġ" macOS " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLIN UX : ĠString Ġ= Ġ" linux " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUN DETECT ED _ OS : ĠString Ġ= Ġ" unde tected " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠWINDO WS _ COMMAND _ PREFIX Ġ= Ġ" cmd . exe Ġ/ c " ĊĠĠĠĠĠĠĠ Ġval ĠLIN UX _ SHELL _ PREFIX Ġ= Ġarray ListOf (" bash ", Ġ"- c ") ĊĠĠĠĠĠĠĠ Ġval ĠSPACE Ġ= Ġ" Ġ" ĊĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠX ET EX Ġ= Ġ" Xe TeX " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPDF TEX Ġ= Ġ" pdf TeX " ĊĊĠĠĠĠĠĠĠ Ġfun Ġget OS (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperating System : ĠString Ġ= ĠSystem . getProperty (" os . name "). toLowerCase () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperating System . contains (" windows ") Ġ-> Ġreturn ĠWINDO WS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperating System . contains (" mac ") Ġ-> Ġreturn ĠMAC OS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperating System . contains (" linux ") Ġ-> Ġreturn ĠLIN UX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUN DETECT ED _ OS ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtry Make Output Dir () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠFile ("./ output /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! outputFile . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile . mkdir () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġhas Program ( program ToCheck : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠOS Ġ= Ġget OS () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠVERSION _ PARAM Ġ= Ġ"-- version " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcommand Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( OS Ġ== ĠWINDO WS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Ġ= ĠWINDO WS _ COMMAND _ PREFIX Ġ+ ĠSPACE Ġ// ĠWindows Ġneeds Ġthis Ġto Ġbe Ġable Ġto Ġuse Ġe . g . ĠX ET EX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Ġ+= Ġprogram ToCheck Ġ+ ĠSPACE Ġ+ ĠVERSION _ PARAM ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= ĠRuntime . get Runtime (). exec ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġprocess . inputStream ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscanner Ġ= ĠScanner ( inputStream , Ġ" UTF - 8 "). use Delimiter ("\\ A ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhave Required Program Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscanner . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġline : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( scanner . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġscanner . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line . contains ( program ToCheck )) Ġ{ Ġ// Ġsufficient ly Ġimplies Ġinstallation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhave Required Program Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! have Required Program ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException ( program ToCheck ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠIOException ) Ġ{ Ġ// Ġany Ġother Ġexception ... Ġmaybe Ġthis Ġouter - try Ġis Ġunnecessary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException ( exception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Delimiter (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( get OS ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLIN UX Ġ-> Ġreturn Ġ Ġ"\ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWINDO WS Ġ-> Ġreturn Ġ"\ r \ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMAC OS Ġ-> Ġreturn Ġ"\ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"\ n " Ġ// Ġbest Ġguess Ġfor Ġanything Ġelse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }