summary refs log tree commit diff stats
path: root/tools/nimgrep.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-02-02 00:24:28 +0100
committerAraq <rumpf_a@web.de>2011-02-02 00:24:28 +0100
commit5e657a4b343da2727494bc3622a03e06c03fdf79 (patch)
treeb2fb2fdcf6c878c9c791a5e7bdd7d95dfe989207 /tools/nimgrep.nim
parent437eb2c37ec9b3829301e27ea6bce7d70ad5eb02 (diff)
downloadNim-5e657a4b343da2727494bc3622a03e06c03fdf79.tar.gz
nimgrep: support for multiple input files/dirs
Diffstat (limited to 'tools/nimgrep.nim')
-rwxr-xr-xtools/nimgrep.nim14
1 files changed, 8 insertions, 6 deletions
diff --git a/tools/nimgrep.nim b/tools/nimgrep.nim
index 8ee1b8a76..0418e18ce 100755
--- a/tools/nimgrep.nim
+++ b/tools/nimgrep.nim
@@ -16,7 +16,7 @@ const
 
   (c) 2011 Andreas Rumpf
 Usage:
-  nimgrep [options] [pattern] [files/directory]
+  nimgrep [options] [pattern] (file/directory)*
 Options:
   --find, -f          find the pattern (default)
   --replace, -r       replace the pattern
@@ -44,7 +44,7 @@ type
     ceAbort, ceYes, ceAll, ceNo, ceNone
     
 var
-  filename = ""
+  filenames: seq[string] = @[]
   pattern = ""
   replacement = ""
   options: TOptions
@@ -107,6 +107,7 @@ proc highlight(s, match, repl: string, t: tuple[first, last: int],
 proc processFile(filename: string) = 
   var buffer = system.readFile(filename)
   if isNil(buffer): quit("cannot open file: " & filename)
+  stdout.writeln(filename)
   var pegp: TPeg
   var rep: TRegex
   var result: string
@@ -204,13 +205,13 @@ for kind, key, val in getopt():
   case kind
   of cmdArgument:
     if options.contains(optStdIn): 
-      filename = key
+      filenames.add(key)
     elif pattern.len == 0: 
       pattern = key
     elif options.contains(optReplace) and replacement.len == 0:
       replacement = key
     else:
-      filename = key
+      filenames.add(key)
   of cmdLongOption, cmdShortOption:
     case normalize(key)
     of "find", "f": incl(options, optFind)
@@ -242,7 +243,7 @@ if optStdin in options:
 if pattern.len == 0:
   writeHelp()
 else: 
-  if filename.len == 0: filename = os.getCurrentDir()
+  if filenames.len == 0: filenames.add(os.getCurrentDir())
   if optRegex notin options: 
     if optIgnoreStyle in options: 
       pattern = "\\y " & pattern
@@ -255,5 +256,6 @@ else:
       quit "ignorestyle not supported for regular expressions"
     if optWord in options:
       pattern = r"\b (:?" & pattern & r") \b"
-  walker(filename)
+  for f in items(filenames):
+    walker(f)