Fan

 

class

build::Exec

sys::Obj
  build::Task
    build::Exec
//
// 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.make(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]")
    }
  }

  Process process
}