mirror of
https://github.com/samsonjs/csc360-a1-shell.git
synced 2026-03-25 08:45:52 +00:00
Fix executing built-in commands
This commit is contained in:
parent
88339bdf37
commit
69f1639128
1 changed files with 10 additions and 8 deletions
18
ruby/main.rb
18
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
|
||||
|
|
|
|||
Loading…
Reference in a new issue