diff --git a/cat.nim b/cat.nim index bafd2f6..4c810c9 100644 --- a/cat.nim +++ b/cat.nim @@ -4,7 +4,7 @@ import common proc catFile(file:string) = if not existsFile(file): echo "cat: " & file & ": No such file or directory" - return + system.quit 1 var s = newFileStream(file, fmRead) while not s.atEnd: write(stdout, s.readChar) diff --git a/nimbase.nimble b/nimbase.nimble index 59d03fe..e6b07f9 100644 --- a/nimbase.nimble +++ b/nimbase.nimble @@ -8,6 +8,6 @@ requires "nim >= 0.19.0" requires "cligen >= 0.9.19" requires "stint >= 0.0.1" -bin = @["add", "cat", "cp", "div", "echo", "factor", "false", "head", "mkdir", "mul", "rm", "seq", "sleep", "sub", "tee", "true", "yes"] +bin = @["add", "cat", "cp", "div", "echo", "factor", "false", "head", "mkdir", "mul", "rm", "seq", "sleep", "sub", "tee", "touch", "true", "yes"] binDir = "bin" diff --git a/rm.nim b/rm.nim index 22f25cd..671629d 100644 --- a/rm.nim +++ b/rm.nim @@ -1,6 +1,9 @@ -import cligen, os +import cligen, os, system import common +const + errorMsg = "rm: cannot remove '" + proc main(files:seq[string], force=false, recursive=false) = for file in files: if existsFile(file): @@ -9,8 +12,10 @@ proc main(files:seq[string], force=false, recursive=false) = if recursive: removeDir(file) else: - echo "rm: cannot remove '" & file & "': Is a directory" + echo errorMsg & file & "': Is a directory" + programResult = 1 else: - echo "rm: cannot remove '" & file & "': No such file or directory" + echo errorMsg & file & "': No such file or directory" + programResult = 1 dispatch(main, version=("version", nimbaseVersion)) diff --git a/touch.nim b/touch.nim new file mode 100644 index 0000000..f2b726e --- /dev/null +++ b/touch.nim @@ -0,0 +1,10 @@ +import cligen, os, times, streams +import common + +proc main(files:seq[string]) = + for file in files: + if not existsFile(file): + discard newFileStream(file, fmWrite) + setLastModificationTime(file, getTime()) + +dispatch(main, version=("version", nimbaseVersion))