Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/droppo/colorer
Command line utility useful to add color to commands that do not have it by default
https://github.com/droppo/colorer
cli color linux macos terminal utility
Last synced: 25 days ago
JSON representation
Command line utility useful to add color to commands that do not have it by default
- Host: GitHub
- URL: https://github.com/droppo/colorer
- Owner: droppo
- Created: 2021-08-10T16:45:31.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-01-06T15:33:43.000Z (almost 2 years ago)
- Last Synced: 2024-10-01T16:57:06.543Z (about 1 month ago)
- Topics: cli, color, linux, macos, terminal, utility
- Language: Rust
- Homepage:
- Size: 292 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Colorer
![Crates.io](https://img.shields.io/crates/v/colorer)
![GitHub last commit](https://img.shields.io/github/last-commit/droppo/colorer)**Colorer** is a simple and extensible text parsing command line utility that is intended to add color to commands that do not have it by default.
The command uses user's defined configuration files.
## Installation
### Installing using Cargo
If Rust toolchain is installed, it is possible to install **colorer** by using `cargo`:
``` bash
cargo install colorer # from crates.io
```or, after cloning this repository, run:
```bash
cargo install --path .
```### Installing from releases
Another way to intall this program is to download the binary from the release page. There are multiple choices:
- download the binary and put it in the path (create the directory containing the color files manually)
- download the package (deb or rpm) and install it. This will also create the directory containing the configuration files.## Usage
The program searches for configuration files in `/etc/colorer`. This repository contains some basic configuration files available in `color_patters` directory.
To use **colorer**, pass the command to be runned as argument, for example:
```bash
colorer -- df -h
```## Define new configuration files
The files used to define a color scheme are simple TOML files named after the commads (e.g. `ls.toml`). A color scheme contains a `command` vector in which every component contains the following variables:
- `regex`: the regex used to find the text. This value is mandatory.
- `default decorator`: it contains an array of colors. An array is used so it is possible to add a background color, a foreground color as well as a bold, italics. Also this value is mandatory.
- `optionals_decorators`: this value is optional and contains an array of alternative values for the string found with the regex. The elements are represented as a tuple where the first value contains a regex that searches for a pattern **only on what has been found by the mandatory regex**, and a list of decorators.An example is given by the following snippet defined for `df`. This is used to highlight the usage represented as percentage.
``` toml
[[command]]
regex = "(?<=(\\b(\\d+((\\.|\\,)\\d+)?(\\w+)?\\s+){3}))\\d+%" # main regex.
# This searches for all
# percentages
default_decorator = ["GreenFg"] # this is the default decorator and it is used
# if none of the optional decorators are used.
# By exclusion, for this example, it includes
# all the values from 0% up to 49%
optional_decorators = [
# the following regexs apply only for the text extracted by the main regex
[
"([5-7][0-9])%", # values from 50% up to 79%
["YellowFg"] # yellow text
],
[
"([8][0-9]|[9][0-6])%", # values from 80% up to 96%
["MagentaFg"] # magenta text
],
[
"([9][7-9]|100)%", # values above 97%
["RedBg"] # red backgroud
]
]
```It is possible to define color schemas for a command (`df`, `ping`, `nmap`) as well a for sub-commands (`docker ps`, `docker search`). For sub-commands definitions, replace `command` with `subcommand.`. For example, in case of `docker search`:
``` toml
[[subcommand.search]]
regex = "(^[^NAME]\\w+(?=\\s)|(?<=(^\\w+\\/))\\S+)"
default_decorator = ["YellowFgBright", "Bold"]
```## Notes
It is always a good idea to use double-dash if **colorer** is used to alias a command or when options are used.
For example, by defining `ll='colorer ls -lahF'`, `ll --help` will print the help message from colorer. This problem can be avoided with `ll='colorer -- ls -lahF'`## Screenshots
![df screenshot](screenshots/df.png)
![ping screenshot](screenshots/ping.png)
![nmap screenshot](screenshots/nmap.png)