diff --git a/README.md b/README.md index cf916b94..43ce1411 100644 --- a/README.md +++ b/README.md @@ -362,7 +362,8 @@ include the base directories (e.g., `lib/resources/file1` instead of just `file1 Available options: + `-v`: Invert `regex_filter` (only print non-matching lines). -+ `-l`: Print only filenames of matching files ++ `-l`: Print only filenames of matching files. ++ `-i`: Ignore case. Examples: diff --git a/src/grep.js b/src/grep.js index 3880fa19..b696792a 100644 --- a/src/grep.js +++ b/src/grep.js @@ -7,6 +7,7 @@ common.register('grep', _grep, { cmdOptions: { 'v': 'inverse', 'l': 'nameOnly', + 'i': 'ignoreCase', }, }); @@ -17,7 +18,8 @@ common.register('grep', _grep, { //@ Available options: //@ //@ + `-v`: Invert `regex_filter` (only print non-matching lines). -//@ + `-l`: Print only filenames of matching files +//@ + `-l`: Print only filenames of matching files. +//@ + `-i`: Ignore case. //@ //@ Examples: //@ @@ -41,6 +43,9 @@ function _grep(options, regex, files) { } var grep = []; + if (options.ignoreCase) { + regex = new RegExp(regex, 'i'); + } files.forEach(function (file) { if (!fs.existsSync(file) && file !== '-') { common.error('no such file or directory: ' + file, 2, { continue: true }); diff --git a/test/grep.js b/test/grep.js index f450aabb..f973640c 100644 --- a/test/grep.js +++ b/test/grep.js @@ -137,6 +137,13 @@ test('-l option', t => { t.is(result.split('\n').length - 1, 2); }); +test('-i option', t => { + const result = shell.grep('-i', 'test', 'test/resources/grep/case1', 'test/resources/grep/case1.txt', + 'test/resources/grep/case1.js'); + t.falsy(shell.error()); + t.is(result.split('\n').length - 1, 3); +}); + test('the pattern looks like an option', t => { const result = shell.grep('--', '-v', 'test/resources/grep/file2'); t.falsy(shell.error()); diff --git a/test/resources/grep/case1 b/test/resources/grep/case1 new file mode 100644 index 00000000..b08f7b08 --- /dev/null +++ b/test/resources/grep/case1 @@ -0,0 +1 @@ +Test3 diff --git a/test/resources/grep/case1.js b/test/resources/grep/case1.js new file mode 100644 index 00000000..df6b0d2b --- /dev/null +++ b/test/resources/grep/case1.js @@ -0,0 +1 @@ +test3 diff --git a/test/resources/grep/case1.txt b/test/resources/grep/case1.txt new file mode 100644 index 00000000..bac87cc8 --- /dev/null +++ b/test/resources/grep/case1.txt @@ -0,0 +1 @@ +TEST3