When playing with kubectl
, I sometimes found it hard to extract the information I needed most from the extermely long, mono-colored output produced by the CLI. The same things happens when I'm using curl
to test some REST APIs which usually return a long string of JSON.
Of course I can use GUI tools like Kubernetes Dashboard and Postman, but for simple operations that need to be performed swiftly, CLIs have their own advantages. Therefore, I made limner to bring some changes to the CLIs' output.
Go to Release Page, download a release and run:
tar zxvf lm_[version]_[os]_[arch].tar.gz
cd lm_[version]_[os]_[arch]
mv ./lm_[os]_[arch] ./lm
chmod +x ./lm
[your command] | ./lm
Remember to replace the text in []
.
-
You'll need Go installed.
-
Clone the repo:
git clone https://github.com/SignorMercurio/limner.git
cd limner
go build -o lm .
- Run the command:
[your command] | ./lm
Note: It's strongly recommended to add the binary to your $PATH, e.g.
/usr/local/bin
.
In most cases, you don't need to append any arguments when using limner as it automatically detects the format of the output.
kubectl get po | lm
kubectl describe deploy/nginx | lm
curl -s https://api.github.com/users/SignorMercurio | lm
cat nginx/deploy.yml | lm tr -i yaml -o json
You can always omit -i yaml
as long as the format of input is YAML (or looks like YAML). The same is true for other formats.
curl -s https://jsonplaceholder.typicode.com/users/1/albums | lm tr -o yml
Note: Limner is only designed for dealing with outputs. Do not use it with commands that need to receive input from stdin.
TODO: Add support for more formats and transformation between different formats.
Take kubectl
as an example.
Suppose you've already configured autocompletion for kubectl
(Optional).
In your .bash_profile
or .bashrc
, append the following lines:
function k() {kubectl $@ | lm}
complete -o default -F __start_kubectl k
alias kx="kubectl exec -it"
Suppose you've already configured autocompletion for kubectl
(Optional).
In your .zprofile
or .zshrc
, append the following lines:
function k() {kubectl $@ | lm}
compdef k=kubectl
alias kx="kubectl exec -it"
After the above steps, you'll be able to use kubectl
with color and autocompletion like:
When you choose to output the result to a file, or pass the result to other programs, through a pipe |
or redirection >
, you certainly do not want limner to colorize the output. The --plain
flag (or -p
) is meant for this, which prevent limner from colorizing the output.
You can use a config file to customize color themes. By default, limner will try to read $HOME/.limner.yaml
but you can specify the config file with -c
, for example:
kubectl get po | lm -c config/limner.yml
The default config file looks like:
key_color: Red
string_color: Green
bool_color: Yellow
number_color: Yellow
null_color: Cyan
header_color: Blue
column_colors:
- White
- Cyan
And here's an example of config file, which is suitable for a light-background terminal:
key_color: Blue
string_color: Green
bool_color: Red
number_color: Red
null_color: Cyan
header_color: Magenta
column_colors:
- Black
- Cyan
Possible colors include Red
, Green
, Yellow
, Cyan
, Blue
, Magenta
, White
and Black
.
Specify -t
to force limner to view the output as a specific type: YAML / JSON / table, etc. For example:
kubectl describe deploy/nginx | lm -t yaml
Note: Specifying
-t yaml
inkubectl describe
is not necessary.
As you can see from the section Transform YAML to JSON, all you need is:
[something of input type] | lm -o [output type]
Use -i [input type]
if you want to force the limner to view the input as a specific type.
Any contributions are welcome. Please feel free to:
- Open an Issue
- Creating a Pull Request
- Comment in an Issue / PR
- Open a Discussion
Thank you for willing to contribute to this project!
- Basic colorization
- YAML
- JSON
- Tables
- ...
- Simple data format transformation
- YAML <-> JSON
- ...
If you have any suggestions for the project, please don't hesitate to open an issue or pull request.
Distributed under the MIT License. See LICENSE for more information.
Inspired by the following incredible projects: