module orelang.operator.SystemOperator;
import orelang.operator.IOperator,
       orelang.Engine,
       orelang.Value;

import std.process,
       std..string;

class SystemOperator : IOperator {
  /**
   * call
   */
  public Value call(Engine engine, Value[] args) {
    string[] args_strs;
    
    foreach (arg; args) {
      args_strs ~= engine.eval(arg).toString;
    }

    try {
      auto pid = spawnProcess(args_strs);//execute(args_strs.join(" "));

      return new Value(wait(pid));
    } catch {
      return new Value(-1);
    }
  }
}