nimbase/tail.nim
joachimschmidt557 afa9b3682b Add tail utility
2019-04-04 20:53:53 +02:00

29 lines
981 B
Nim

import cligen, os, math, deques
import common
proc main(files:seq[string], lines=10, bytes=0, quiet=false) =
# if files.len == 0:
# files.add "-"
for file in files:
if files.len > 1 and not quiet:
writeLine(stdout, "==> " & (if file == "-": "standard input" else: file) & " <==")
var f = if file == "-": stdin
else: open(file, fmRead)
if bytes > 0:
var q = initDeque[char]()
while not f.endOfFile:
if q.len > bytes:
q.popFirst
q.addLast(f.readChar)
for item in q.items:
write(stdout, item)
elif lines > 0:
var q = initDeque[string]()
for line in lines(f):
if q.len > lines:
q.popFirst
q.addLast line
for line in q.items:
writeLine(stdout, line)
dispatch(main, version=("version", nimbaseVersion))