diff options
Diffstat (limited to 'std.py')
| -rw-r--r-- | std.py | 22 | 
1 files changed, 11 insertions, 11 deletions
| @@ -23,12 +23,13 @@ def std_print(arg):      return NebNil()  def std_print_all(arg): -    for idx, item in enumerate(arg.items): +    items = arg.items +    for idx, item in enumerate(items):          if isinstance(item, NebExpression): -            arg.items[idx] = evaluate_expression(item) +            items[idx] = evaluate_expression(item)          elif not isinstance(item, NebString):              raise exception("print-all needs all strings!") -    for x in arg.items: +    for x in items:          std_print(x)      return NebNil() @@ -153,9 +154,9 @@ def std_literal_to_string(arg):  def std_shell(arg):      assert isinstance(arg, NebString)      lst = arg.value.split(" ") -    ret = subprocess.run(lst, capture_output=True) +    ret = subprocess.run(lst, capture_output=True, check=True)      stdout_as_list = ret.stdout.decode("utf-8").split("\n")[:-1] -    return NebList([ret.returncode] + stdout_as_list) +    return NebList(list(NebString(x) for x in stdout_as_list))  def std_shell_pipe(args):      prev = None @@ -166,20 +167,19 @@ def std_shell_pipe(args):          lst = arg.value.split(" ")          if prev is None:              if stdout is None: -                ret = subprocess.run(lst, capture_output=True) +                ret = subprocess.run(lst, capture_output=True, check=True)              else: -                ret = subprocess.run(lst, stdout=stdout) +                ret = subprocess.run(lst, stdout=stdout, check=True)          else:              if stdout is None: -                ret = subprocess.run(lst, input=prev.stdout, capture_output=True) +                ret = subprocess.run(lst, input=prev.stdout, capture_output=True, check=True)              else: -                ret = subprocess.run(lst, stdout=stdout, input=prev.stdout) +                ret = subprocess.run(lst, stdout=stdout, input=prev.stdout, check=True) -        # TODO should we bail here if the return code is non-zero?          prev = ret      stdout_as_list = prev.stdout.decode("utf-8").split("\n")[:-1] -    return NebList([prev.returncode] + stdout_as_list) +    return NebList(list(NebString(x) for x in stdout_as_list))  def evaluate_expression(expr):      if not expr.symbol.name in STD: | 
