Fix executing built-in commands

This commit is contained in:
Sami Samhuri 2022-01-16 15:04:10 -08:00
parent 88339bdf37
commit 69f1639128
No known key found for this signature in database
GPG key ID: 4B4195422742FC16

View file

@ -88,18 +88,20 @@ class Shell
end end
def process_command(cmd) 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 # TODO: proper word splitting, pass arrays to built-ins
args = cmd&.split args = cmd.split
argv0 = args&.first argv0 = args.first
case argv0 logger.verbose "\"Words\": #{args.inspect}"
when nil, 'exit' if @builtins.builtin?(argv0)
exit 0 logger.verbose "Executing builtin #{argv0}"
when ''
# noop
when @builtins.builtin?(argv0)
args.shift args.shift
@builtins.exec(argv0, args) @builtins.exec(argv0, args)
else else
logger.verbose "Shelling out for #{argv0}"
status = exec_command(cmd) status = exec_command(cmd)
print "#{RED}-#{status}-#{CLEAR} " unless status.zero? print "#{RED}-#{status}-#{CLEAR} " unless status.zero?
end end