MCPcopy Index your code
hub / github.com/arsham/blush

github.com/arsham/blush @v0.6.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.6.0 ↗ · + Follow
197 symbols 773 edges 33 files 51 documented · 26%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Blush

PkgGoDev GitHub go.mod Go version Build Status License: MIT Coverage Status Go Report Card

With Blush, you can highlight matches with any colours of your choice.

1

  1. Install
  2. Usage
  3. Note
  4. Normal Mode
  5. Dropping Unmatched
  6. Piping
  7. Arguments
  8. Notes
  9. Colour Groups
  10. Colours
  11. Complex Grep
  12. Suggestions
  13. License

Install

You can grab a binary from releases page. If you prefer to install it manually you can get the code and install it with the following command:

$ go install github.com/arsham/blush@latest

Make sure you have go>=1.18 installed.

Usage

Blush can read from a file or a pipe:

$ cat FILENAME | blush -b "print in blue" -g "in green" -g "another green"
$ cat FILENAME | blush "some text"
$ blush -b "print in blue" -g "in green" -g "another green" FILENAME
$ blush "some text" FILENAME

Note

Although this program has a good performance, but performance is not the main concern. There are other tools you should use if you are searching in large files. Two examples:

Normal Mode

This method shows matches with the given input:

$ blush -b "first search" -g "second one" -g "and another one" files/paths

Any occurrence of first search will be in blue, second one and and another one are in green.

2

Dropping Unmatched

By default, unmatched lines are not dropped. But you can use the -d flag to drop them:

3

Arguments

Argument Shortcut Notes
N/A -i Case insensitive matching.
N/A -R Recursive matching.
--no-filename -h Suppress the prefixing of file names on output.
--drop -d Drop unmatched lines

File names or paths are matched from the end. Any argument that doesn't match any files or paths are considered as regular expression. If regular expressions are not followed by colouring arguments are coloured based on previously provided colour:

$ blush -b match1 match2 FILENAME

4

Notes

  • If no colour is provided, blush will choose blue.
  • If you only provide file/path, it will print them out without colouring.
  • If the matcher contains only alphabets and numbers, a non-regular expression is applied to search.

Colour Groups

You can provide a number for a colour argument to create a colour group:

$ blush -r1 match1 -r2 match2 -r1 match3 FILENAME

5

All matches will be shown as blue. But match1 and match3 will have a different background colour than match2. This means the numbers will create colour groups.

You also can provide a colour with a series of match requests:

$ blush -r match1 match3 -g match2 FILENAME

Colours

You can choose a pre-defined colour, or pass it your own colour with a hash:

Argument Shortcut
--red -r
--green -g
--blue -b
--white -w
--black -bl
--yellow -yl
--magenta -mg
--cyan -cy

You can also pass an RGB colour. It can be in short form (--#1b2, -#1b2), or long format (--#11bb22, -#11bb22).

6

Complex Grep

You must put your complex grep into quotations:

$ blush -b "^age: [0-9]+" FILENAME

7

Suggestions

This tool is made to make your experience in terminal a more pleasant. Please feel free to make any suggestions or request features by creating an issue.

License

Use of this source code is governed by the MIT License. License file can be found in the LICENSE file.

Extension points exported contracts — how you extend this code

Finder (Interface)
Finder finds texts based on a plain text or regexp logic. If it doesn't find any match, it will return an empty string. [3 …
blush/find.go
Conf (FuncType)
Conf is used to configure the MultiReader.
internal/reader/reader.go

Core symbols most depended-on inside this repo

NewExact
called by 96
blush/find.go
String
called by 37
blush/find.go
Colourise
called by 30
blush/colour.go
NewMultiReader
called by 24
internal/reader/reader.go
Read
called by 22
blush/blush.go
NewRx
called by 21
blush/find.go
Files
called by 16
internal/tools/dir.go
NewLocator
called by 16
blush/find.go

Shape

Function 142
Method 34
Struct 15
Interface 4
FuncType 1
TypeAlias 1

Languages

Go100%

Modules by API surface

blush/blush_test.go28 symbols
blush/find.go20 symbols
blush/find_test.go16 symbols
internal/tools/dir_test.go13 symbols
internal/reader/reader_test.go13 symbols
blush/colour.go13 symbols
blush/blush.go13 symbols
internal/reader/reader.go10 symbols
cmd/main_test.go8 symbols
cmd/helper_test.go7 symbols
cmd/args.go7 symbols
blush/blush_example_test.go7 symbols

For agents

$ claude mcp add blush \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact