From 69f1639128bbfafe2a6ca9298553a6763a850fae Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Sun, 16 Jan 2022 15:04:10 -0800 Subject: [PATCH] Fix executing built-in commands --- ruby/main.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ruby/main.rb b/ruby/main.rb index 10696af..c379a4b 100755 --- a/ruby/main.rb +++ b/ruby/main.rb @@ -88,18 +88,20 @@ class Shell end def process_command(cmd) + logger.verbose "Processing command: #{cmd.inspect}" + exit 0 if cmd.nil? # EOF, ctrl-d + return if cmd.empty? # no input, no-op + # TODO: proper word splitting, pass arrays to built-ins - args = cmd&.split - argv0 = args&.first - case argv0 - when nil, 'exit' - exit 0 - when '' - # noop - when @builtins.builtin?(argv0) + args = cmd.split + argv0 = args.first + logger.verbose "\"Words\": #{args.inspect}" + if @builtins.builtin?(argv0) + logger.verbose "Executing builtin #{argv0}" args.shift @builtins.exec(argv0, args) else + logger.verbose "Shelling out for #{argv0}" status = exec_command(cmd) print "#{RED}-#{status}-#{CLEAR} " unless status.zero? end