Builtins: Added the exit builtin
This commit is contained in:
parent
23592c5e15
commit
5ebbc60ccb
22
src/fsh.nim
22
src/fsh.nim
|
@ -18,10 +18,11 @@ for k, v in envPairs():
|
|||
envVariables[k]=v
|
||||
|
||||
# list of builtin commands
|
||||
let builtins: array[3, string] = [
|
||||
let builtins: array[4, string] = [
|
||||
"set",
|
||||
"setenv",
|
||||
"echo",
|
||||
"exit",
|
||||
]
|
||||
|
||||
# forward declarations
|
||||
|
@ -214,6 +215,25 @@ proc runBuiltin(builtin: string, args: openArray[string]): string =
|
|||
if args[0] == "-n":
|
||||
return args[1..^1].join(" ")
|
||||
return args.join(" ") & "\p"
|
||||
of "exit":
|
||||
if args.len == 0:
|
||||
quit(0)
|
||||
elif args.len == 1:
|
||||
try:
|
||||
quit(args[0].parseInt)
|
||||
except ValueError:
|
||||
quit(0)
|
||||
else:
|
||||
try:
|
||||
let exitcode=args[0].parseInt
|
||||
if exitcode > 0:
|
||||
stderr.write(args[1..^1].join(" "), "\p")
|
||||
else:
|
||||
stdout.write(args[1..^1].join(" "), "\p")
|
||||
quit(exitcode)
|
||||
except ValueError:
|
||||
stdout.write(args.join(" "), "\p")
|
||||
quit(0)
|
||||
else:
|
||||
raise newException(Exception, "Fsh: No such builtin implemented")
|
||||
|
||||
|
|
Loading…
Reference in New Issue