diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2018-04-23 10:37:19 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-04-24 09:34:29 +0200 |
commit | 64908bf171ac3f8cd4c81a6de0e512e47d1d5d5d (patch) | |
tree | affb844c7302311b1a5960fb3b0030867eb0a1d8 /tools | |
parent | 8caf257607e0b76f103155add7849fb934371678 (diff) | |
download | Nim-64908bf171ac3f8cd4c81a6de0e512e47d1d5d5d.tar.gz |
nimgrep: add --filenames option
Diffstat (limited to 'tools')
-rw-r--r-- | tools/nimgrep.nim | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/tools/nimgrep.nim b/tools/nimgrep.nim index 8dc076ad9..4cfcbe9bc 100644 --- a/tools/nimgrep.nim +++ b/tools/nimgrep.nim @@ -11,7 +11,7 @@ import os, strutils, parseopt, pegs, re, terminal const - Version = "1.1" + Version = "1.2" Usage = "nimgrep - Nim Grep Utility Version " & Version & """ (c) 2012 Andreas Rumpf @@ -35,6 +35,8 @@ Options: --nocolor output will be given without any colours. --oneline show file on each matched line --verbose be verbose: list every processed file + --filenames find the pattern in the filenames, not in the contents + of the file --help, -h shows this help --version, -v shows the version """ @@ -42,7 +44,7 @@ Options: type TOption = enum optFind, optReplace, optPeg, optRegex, optRecursive, optConfirm, optStdin, - optWord, optIgnoreCase, optIgnoreStyle, optVerbose + optWord, optIgnoreCase, optIgnoreStyle, optVerbose, optFilenames TOptions = set[TOption] TConfirmEnum = enum ceAbort, ceYes, ceAll, ceNo, ceNone @@ -135,11 +137,14 @@ proc processFile(pattern; filename: string) = filenameShown = true var buffer: string - try: - buffer = system.readFile(filename) - except IOError: - echo "cannot open file: ", filename - return + if optFilenames in options: + buffer = filename + else: + try: + buffer = system.readFile(filename) + except IOError: + echo "cannot open file: ", filename + return if optVerbose in options: stdout.writeLine(filename) stdout.flushFile() @@ -293,6 +298,7 @@ for kind, key, val in getopt(): of "nocolor": useWriteStyled = false of "oneline": oneline = true of "verbose": incl(options, optVerbose) + of "filenames": incl(options, optFilenames) of "help", "h": writeHelp() of "version", "v": writeVersion() else: writeHelp() @@ -304,6 +310,7 @@ when defined(posix): checkOptions({optFind, optReplace}, "find", "replace") checkOptions({optPeg, optRegex}, "peg", "re") checkOptions({optIgnoreCase, optIgnoreStyle}, "ignore_case", "ignore_style") +checkOptions({optFilenames, optReplace}, "filenames", "replace") if optStdin in options: pattern = ask("pattern [ENTER to exit]: ") |