// // Copyright (c) 2006, Brian Frank and Andy Frank // Licensed under the Academic Free License version 3.0 // // History: // 4 Nov 06 Brian Frank Creation // ** ** Exec is used to run an external OS process ** class Exec : Task { new make(BuildScript script, Str[] cmd, File? dir := null) : super(script) { this.process = Process(cmd, dir) } override Void run() { cmd := process.command.join(" ") try { log.info("Exec [$cmd]") result := process.run.join if (result != 0) throw Err.make } catch (Err err) { if (log.isDebug) err.trace throw fatal("Exec failed [$cmd]") } } ** ** Given a executable file turn it into a path to use for Exec: ** - if running on Window's add the '.exe' extension ** - return `sys::File.osPath` ** static Str exePath(File exe) { path := exe.osPath if (Env.cur.os == "win32") path += ".exe" return path } Process process }