treediff/treediff.nim

40 lines
1017 B
Nim
Raw Normal View History

import os, docopt, tables, md5, iterutils, re
proc studyDir(root: string, ignore: Iterable[string]): TableRef[string, string] =
result = newTable[string, string]()
for path in walkDirRec(root):
var relPath = substr(path, len(root))
if foldl(ignore, proc (acc: bool, it: string): bool = acc and match(relPath, re(it)), true): continue
var fileInfo = getFileInfo(path)
if fileInfo.kind == pcFile:
result.add(relPath, $(toMD5(readFile(path))))
elif fileInfo.kind == pcDir:
result.add(relPath, "directory")
when isMainModule:
let doc = """
treediff
Usage:
treediff [-i <regex>]... [<path>]...
treediff (-h | --help)
treediff (-v | --version)
Options:
-h --help Show this usage information.
-v --version Show the program version.
"""
let args = docopt(doc, version = "treediff 0.1")
for root in @(args["<path>"]):
echo "Looking at ", root
echo studyDir(root, @(args["<regex>"]))
echo ""