Find text in files recursively
Flags:
--absolute (or -a)
Show full paths
--case-insensitive (or -i)
Perform a case insensitive search
--clean (or -c)
Print a clean list without formatting
--no-highlight (or -h)
Don't highlight matches
--no-spacing (or -s)
Don't add spacing between items
--no-ignore-defaults
Don't use the default ignore-component-rules
--only-files
Only show the file names and the number of matches
Values:
--path (or -p)
Path to a directory
--exclude (or -e)
Exclude paths that contain this string
--max-results (or -m)
Max results to show
--context (or -C)
Number of lines to show in between
--context-before (or -B)
Number of lines to show before
--context-after (or -A)
Number of lines to show after
--ignore-exact
Add ignore-component-rule (exact)
--ignore-contains
Add ignore-component-rule (contains)
--ignore-starts
Add ignore-component-rule (starts with)
--ignore-ends
Add ignore-component-rule (ends with)
Arguments:
query (Required)
Text query to match
Components are each part of a path.
/these/are/components
They are checked to see if they should be ignored.
By default it ignores files and directories you likely don't need.
# Exact
c == "node_modules" or
c == "package-lock.json" or
c == "env" or
c == "venv" or
c == "build" or
# Contains
c.contains("bundle.") or
c.contains(".min.") or
# Starts
c.starts_with(".") or
# Ends
c.ends_with(".zip") or
c.ends_with(".tar.gz")
These should be updated over time by the dev(s).
You can add more rules through arguments.
It also ignores binary files:
for c in bytes:
if c == 0:
return false
To run the debug version for testing you can use run.sh
.
To compile a production binary you can do:
nim compile -d:release -o=bin/goldie "src/goldie.nim"
Then place that binary somewhere in your path.
Or install through the AUR
I made this because the search tool I used failed to find results sometimes.
I could just use ripgrep
instead, but I can modify this to my needs.
Plus it's fun to have a nim
project.
Code contributions are welcome to this project.
The only restriction is that dependencies are not allowed.
Library files should be included instead of declared in goldie.nimble
.
For instance this uses the nap
library which I wrote, which is used for arguments.
And it resides in src/nap
.