diff --git a/cat.nim b/cat.nim index b9e6b09..0aa132f 100644 --- a/cat.nim +++ b/cat.nim @@ -3,8 +3,13 @@ import common proc main(files:seq[string]) = for file in files: - var s = newFileStream(file, fmRead) - while not s.atEnd: - write(stdout, s.readChar) + if file == "-": + var line = "" + while stdin.readLine(line): + echo line + else: + var s = newFileStream(file, fmRead) + while not s.atEnd: + write(stdout, s.readChar) dispatch(main, version=("version", nimbaseVersion)) diff --git a/nimbase.nimble b/nimbase.nimble index 6a3dc68..35b0c97 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", "seq", "sleep", "sub", "true", "yes"] +bin = @["add", "cat", "cp", "div", "echo", "factor", "false", "head", "mkdir", "mul", "seq", "sleep", "sub", "tee", "true", "yes"] binDir = "bin" diff --git a/tee.nim b/tee.nim new file mode 100644 index 0000000..c6cca19 --- /dev/null +++ b/tee.nim @@ -0,0 +1,15 @@ +import cligen, os, streams +import common + +proc main(files:seq[string]) = + var + fileStreams:seq[Stream] + line = "" + for file in files: + fileStreams.add(newFileStream(file, fmWrite)) + while stdin.readLine(line): + echo line + for fStream in fileStreams: + writeLine(fStream, line) + +dispatch(main, version=("version", nimbaseVersion))