mirror of
https://github.com/samsonjs/csc360-a1-shell.git
synced 2026-04-27 14:57:43 +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
|
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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue