limner

command module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2021 License: MIT Imports: 1 Imported by: 0

README

Limner

Limner colorizes and transforms CLI outputs.

Motivation

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.

Installation

Download a release binary

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 [].

Manual Installation

  1. You'll need Go installed.

  2. Clone the repo:

git clone https://github.com/SignorMercurio/limner.git
cd limner
go build -o lm .
  1. Run the command:
[your command] | ./lm

Note: It's strongly recommended to add the binary to your $PATH, e.g. /usr/local/bin.

Usage

Basic Usage

In most cases, you don't need to append any arguments when using limner as it automatically detects the format of the output.

Colorize tables
kubectl get po | lm

Table colorization

Colorize YAML files
kubectl describe deploy/nginx | lm

YAML colorization

Colorize JSON responses
curl -s https://api.github.com/users/SignorMercurio | lm

JSON colorization

Transform YAML to JSON
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.

Transform JSON to YAML
curl -s https://jsonplaceholder.typicode.com/users/1/albums | lm tr -o yml

TODO: Add support for more formats and transformation between different formats.

Create a shortcut

Take kubectl as an example.

Bash

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
Zsh

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

After the above steps, you'll be able to use kubectl with color and autocompletion like:

Using a shortcut

Non-terminal output

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.

Customize color themes

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

And here's an example of config file, which uses the same color theme as the default one:

key_color: Red
string_color: Green
bool_color: Yellow
number_color: Yellow
null_color: Cyan
header_color: Blue
column_colors:
  - White
  - Cyan

Possible colors include Red, Green, Yellow, Cyan, Blue, Magenta, White and Black.

Enforce types on the output

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 in kubectl describe is not necessary.

Contributions

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!

Roadmap

  • 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.

LICENSE

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

Inspired by the following incredible projects:

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL