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
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