Turn static CLI commands into TUIs with ease

Related tags

Command-line lazycli
Overview

lazycli

Turn static CLI commands into TUIs with ease

Demo Animation

Demo:

Usage

Pick a command that spits out either a list or table of content, like ls, docker ps, git branch, or git status --short. Then run lazycli --

lazycli -- ls

If you find yourself often using lazycli with a specific command, you can easily alias it like so:

echo "alias lcd=\"lazycli -- docker ps\"" >> ~/.zshrc
source ~/.zshrc
lcd

Right now some default keybindings are defined for common commands like ls, docker ps, git branch, git status --short, etc. But you can customise it for any commands you like! Just open the config file from within the program with $ and start playing around.

lazycli is best suited towards any command-line program that spits out a list of items or a table. In your commands, simply refer to the column number by $0 for the first column, $1 for the second column, etc, and lazycli will do the rest. There are plenty of starting examples in the config that you'll be able to draw from.

Installation

Via Cargo

cargo install lazycli

Via binary

Download the binary from the Releases Page

Building from source

  1. clone the repo:
git clone https://github.com/jesseduffield/lazycli.git
  1. install
cargo install --path .
  1. run
lazycli -- ls

QandA

  • Q: Isn't this what fzf does?
  • A: Not quite: fzf requires you to know the command ahead of time whereas lazycli lets you run commands after presenting you the data, and the content is refreshed after you run the command rather than the program closing (admittedly I haven't used fzf but I'm pretty sure that's all correct).
Comments
  • LazyCLI throwing

    LazyCLI throwing "out of range" error after executing bash script

    Hi Jesse,

    Firstly, as someone who uses lazygit and lazydocker on an hourly basis, I can't thank you enough for the tools you're creating here. I've previously thrown you a few dollars via Donorbox, though I think it's time I topped up that pot of beer money 😄

    I'm starting out with your latest tool, lazycli, and it's already opening new doors for me. I have, however, encountered one issue that I can't quite work through and wondered if you could help.

    I currently have a simple bash script containing a single command (using the jira cli from https://github.com/go-jira/jira)

    cat ~/dev/jira.sh
    jira list  --query "resolution = unresolved and assignee=currentuser() and sprint in openSprints() ORDER BY status asc"
    

    If I run the bash shell directly within the terminal, it outputs my list of assigned Jira tasks, as expected:

    ~/dev/jira.sh
    EDG-3889:    Some users are overlooked for pole-price messages and price_change_enabled checks since their association with a station is implicit, rather than being explicitly associated with a station in our admin tooling.
    EDG-2416:    Ability to recognise and validate UK and US telephone numbers when setting up new users
    EDG-3849:    Surface the "key" field on brands to the API Gateway
    EDG-3698:    Tax Rates at Contract Level (Any Supplier)
    EDG-3595:    Pole price alert received email  only to first station manager
    

    Strangely, if I execute the same script as an argument to lazycli, I'm seeing a runtime error since due to some kind of range overflow:

    RUST_BACKTRACE=1 lazycli -- ~/dev/jira.sh
    
    ⡿thread '<unnamed>' panicked at 'range end index 107 out of range for slice of length 101', /Users/dave/.cargo/registry/src/github.com-1ecc6299db9ec823/lazycli-0.1.14/src/parse/mod.rs:38:26
    stack backtrace:
    0: rust_begin_unwind
    at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/std/src/panicking.rs:493:5
    1: core::panicking::panic_fmt
    at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/panicking.rs:92:14
    2: core::slice::index::slice_end_index_len_fail
    at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/slice/index.rs:41:5
    3: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
    4: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
    5: lazycli::parse::parse
    6: lazycli::event_loop::get_rows_from_command
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    ⣯
    

    If it helps, I've previously had this exact configuration working, though something seems to have changed, possibly something subtle about the output from the jira.sh script that's suddenly causing lazycli to error?

    Are you able to take a look and help me out with this please, dude? 🙏

    Thanks in advance for your assistance! Dave J

    opened by dvjones89 13
  • fix test_run_command_fail

    fix test_run_command_fail

    I ran in to this error when running cargo test, not sure if there is a bash update that changed that or the bash on my machine is just different. This pull request should be able to make it more compatible with different versions of bash

    ---- command::test_run_command_fail stdout ----
    thread 'command::test_run_command_fail' panicked at 'assertion failed: `(left == right)`
      left: `Err("bash: line 1: asldfkjh: command not found\n")`,
     right: `Err("bash: asldfkjh: command not found\n")`', src/command.rs:26:3
    

    Note that assert!(matches!()) could be changed to assert_matches! once it is stable: https://github.com/rust-lang/rust/issues/82775

    opened by figsoda 6
  • Installation failed via cargo

    Installation failed via cargo

    Currently I can't install it via cargo, this is the log:

    $ cargo install lazycli
    
    ...
       Compiling lazycli v0.1.15
    error[E0599]: no method named `about` found for struct `Arg` in the current scope
      --> /home/savaka/.cargo/registry/src/github.com-1ecc6299db9ec823/lazycli-0.1.15/src/args.rs:20:12
       |
    20 |           .about("ignores the first `n` lines of output")
       |            ^^^^^ method not found in `Arg<'_>`
    
    error[E0599]: no method named `about` found for struct `Arg` in the current scope
      --> /home/savaka/.cargo/registry/src/github.com-1ecc6299db9ec823/lazycli-0.1.15/src/args.rs:28:12
       |
    28 | ...   .about("frequency of refreshing the content in seconds (values like 0.1 are permitted. Values like 0.001? Also permitted, but you n...
       |        ^^^^^ method not found in `Arg<'_>`
    
    For more information about this error, try `rustc --explain E0599`.
    error: failed to compile `lazycli v0.1.15`, intermediate artifacts can be found at `/tmp/cargo-install5hpoM9`
    
    Caused by:
      could not compile `lazycli` due to 2 previous errors
    
    opened by lavantien 2
  • Unable to install on Ubuntu 18.04

    Unable to install on Ubuntu 18.04

    Hi,

    Just tried to install on Ubuntu 18.04 and it failed with the following error message:

    $ cargo install lazycli
        Updating crates.io index
      Downloaded lazycli v0.1.15
      Downloaded 1 crate (22.3 KB) in 1.60s
      Installing lazycli v0.1.15
      Downloaded aho-corasick v0.7.18
      Downloaded cfg-if v1.0.0
      Downloaded atty v0.2.14
      Downloaded bitflags v1.3.2
      Downloaded autocfg v1.0.1
      Downloaded hashbrown v0.11.2
      Downloaded indexmap v1.7.0
      Downloaded linked-hash-map v0.5.4
      Downloaded lazy_static v1.4.0
      Downloaded lock_api v0.4.5
      Downloaded log v0.4.14
      Downloaded clap_derive v3.0.0-beta.5
      Downloaded clap v3.0.0-beta.5
      Downloaded heck v0.3.3
      Downloaded instant v0.1.12
      Downloaded either v1.6.1
      Downloaded dtoa v0.4.8
      Downloaded itertools v0.10.1
      Downloaded directories v3.0.2
      Downloaded crossterm v0.18.2
      Downloaded crossterm v0.19.0
      Downloaded dirs-sys v0.3.6
      Downloaded cassowary v0.3.0
      Downloaded memchr v2.4.1
      Downloaded parking_lot v0.11.2
      Downloaded parking_lot_core v0.8.5
      Downloaded regex v1.5.4
      Downloaded regex-syntax v0.6.25
      Downloaded serde v1.0.130
      Downloaded scopeguard v1.1.0
      Downloaded serde_derive v1.0.130
      Downloaded version_check v0.9.3
      Downloaded unicode-xid v0.2.2
      Downloaded signal-hook-registry v1.4.0
      Downloaded yaml-rust v0.4.5
      Downloaded proc-macro-error-attr v1.0.4
      Downloaded os_str_bytes v4.2.0
      Downloaded mio v0.7.14
      Downloaded quote v1.0.10
      Downloaded strsim v0.10.0
      Downloaded smallvec v1.7.0
      Downloaded proc-macro-error v1.0.4
      Downloaded unicode-width v0.1.9
      Downloaded termcolor v1.1.2
      Downloaded unicode-segmentation v1.8.0
      Downloaded textwrap v0.14.2
      Downloaded proc-macro2 v1.0.32
      Downloaded unicase v2.6.0
      Downloaded serde_yaml v0.8.21
      Downloaded signal-hook v0.1.17
      Downloaded syn v1.0.81
      Downloaded tui v0.14.0
      Downloaded ticker v0.1.1
      Downloaded libc v0.2.105
      Downloaded 54 crates (3.3 MB) in 1.34s
       Compiling libc v0.2.105
       Compiling proc-macro2 v1.0.32
       Compiling unicode-xid v0.2.2
       Compiling version_check v0.9.3
       Compiling syn v1.0.81
       Compiling cfg-if v1.0.0
       Compiling log v0.4.14
       Compiling parking_lot_core v0.8.5
       Compiling memchr v2.4.1
       Compiling serde_derive v1.0.130
       Compiling serde v1.0.130
       Compiling autocfg v1.0.1
       Compiling smallvec v1.7.0
       Compiling scopeguard v1.1.0
       Compiling bitflags v1.3.2
       Compiling lazy_static v1.4.0
       Compiling hashbrown v0.11.2
       Compiling unicode-width v0.1.9
       Compiling unicode-segmentation v1.8.0
       Compiling linked-hash-map v0.5.4
       Compiling dtoa v0.4.8
       Compiling termcolor v1.1.2
       Compiling regex-syntax v0.6.25
       Compiling cassowary v0.3.0
       Compiling strsim v0.10.0
       Compiling either v1.6.1
       Compiling ticker v0.1.1
       Compiling instant v0.1.12
       Compiling proc-macro-error-attr v1.0.4
       Compiling proc-macro-error v1.0.4
       Compiling unicase v2.6.0
       Compiling lock_api v0.4.5
       Compiling textwrap v0.14.2
       Compiling yaml-rust v0.4.5
       Compiling indexmap v1.7.0
       Compiling itertools v0.10.1
       Compiling heck v0.3.3
       Compiling os_str_bytes v4.2.0
       Compiling aho-corasick v0.7.18
       Compiling mio v0.7.14
       Compiling signal-hook-registry v1.4.0
       Compiling atty v0.2.14
       Compiling dirs-sys v0.3.6
       Compiling quote v1.0.10
       Compiling parking_lot v0.11.2
       Compiling signal-hook v0.1.17
       Compiling regex v1.5.4
       Compiling directories v3.0.2
       Compiling crossterm v0.18.2
       Compiling clap_derive v3.0.0-beta.5
       Compiling clap v3.0.0-beta.5
    error[E0658]: arbitrary expressions in key-value attributes are unstable
     --> /home/username/.cargo/registry/src/github.com-1ecc6299db9ec823/clap-3.0.0-beta.5/src/lib.rs:8:10
      |
    8 | #![doc = include_str!("../README.md")]
      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      |
      = note: see issue #78835 <https://github.com/rust-lang/rust/issues/78835> for more information
    
    error[E0658]: use of unstable library feature 'osstring_ascii'
       --> /home/username/.cargo/registry/src/github.com-1ecc6299db9ec823/clap-3.0.0-beta.5/src/parse/matches/matched_arg.rs:130:19
        |
    130 |                 v.eq_ignore_ascii_case(val)
        |                   ^^^^^^^^^^^^^^^^^^^^
        |
        = note: see issue #70516 <https://github.com/rust-lang/rust/issues/70516> for more information
    
    error: aborting due to 2 previous errors
    
    For more information about this error, try `rustc --explain E0658`.
    error: could not compile `clap`
    
    To learn more, run the command again with --verbose.
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `lazycli v0.1.15`, intermediate artifacts can be found at `/tmp/cargo-installVmNGgy`
    
    Caused by:
      build failed
    

    I just installed cargo before this attempt, using apt. That pulled with it the following: ¤ cargo amd64 0.52.0-0ubuntu1~18.04.1 ¤ rustc amd64 1.51.0+dfsg1+llvm-1~exp3ubuntu1~18.04.1 ¤ libstd-rust-dev amd64 1.51.0+dfsg1+llvm-1~exp3ubuntu1~18.04.1 ¤ libstd-rust-1.51 amd64 1.51.0+dfsg1+llvm-1~exp3ubuntu1~18.04.1

    Can I do anything to help you debug this?

    opened by anvandaren 2
  • error[E0277]: the trait bound ... --> src/ui/mod.rs:62:10

    error[E0277]: the trait bound ... --> src/ui/mod.rs:62:10

    I'm seeing an error when I try to build lazycli. I don't know Rust at all.

    Rust version: rustc 1.43.1 (8d69840ab 2020-05-04) Cargo command: cargo install --git https://github.com/jesseduffield/lazycli --verbose

    Error message:

    error[E0277]: the trait bound `std::vec::Vec<tui::layout::Constraint>: std::convert::From<[tui::layout::Constraint; 3]>` is not satisfied
      --> src/ui/mod.rs:62:10
       |
    62 |         .constraints([
       |          ^^^^^^^^^^^ the trait `std::convert::From<[tui::layout::Constraint; 3]>` is not implemented for `std::vec::Vec<tui::layout::Constraint>`
       |
       = help: the following implementations were found:
                 <std::vec::Vec<T> as std::convert::From<&[T]>>
                 <std::vec::Vec<T> as std::convert::From<&mut [T]>>
                 <std::vec::Vec<T> as std::convert::From<std::borrow::Cow<'a, [T]>>>
                 <std::vec::Vec<T> as std::convert::From<std::boxed::Box<[T]>>>
               and 5 others
       = note: required because of the requirements on the impl of `std::convert::Into<std::vec::Vec<tui::layout::Constraint>>` for `[tui::layout::Constraint; 3]`
    
    error: aborting due to previous error
    
    For more information about this error, try `rustc --explain E0277`.
    error: failed to compile `lazycli v0.1.14 (https://github.com/jesseduffield/lazycli#49fbe2b6)`, intermediate artifacts can be found at `/tmp/cargo-installmQuRvH`
    
    Caused by:
      could not compile `lazycli`.
    
    Caused by:
      process didn't exit successfully: `rustc --crate-name lazycli --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C metadata=641deed7a2de3b28 -C extra-filename=-641deed7a2de3b28 --out-dir /tmp/cargo-installmQuRvH/release/deps -L dependency=/tmp/cargo-installmQuRvH/release/deps --extern clap=/tmp/cargo-installmQuRvH/release/deps/libclap-dc7b4d1fc59537f9.rlib --extern crossterm=/tmp/cargo-installmQuRvH/release/deps/libcrossterm-1bc56029921d54d6.rlib --extern directories=/tmp/cargo-installmQuRvH/release/deps/libdirectories-5958782e7f9edfea.rlib --extern regex=/tmp/cargo-installmQuRvH/release/deps/libregex-2fe96743b173e2a1.rlib --extern serde=/tmp/cargo-installmQuRvH/release/deps/libserde-e57fc93ae4eeb771.rlib --extern serde_yaml=/tmp/cargo-installmQuRvH/release/deps/libserde_yaml-a4f8433055b73ece.rlib --extern ticker=/tmp/cargo-installmQuRvH/release/deps/libticker-36944b801d7aa26c.rlib --extern tui=/tmp/cargo-installmQuRvH/release/deps/libtui-6833afb078b918e4.rlib` (exit code: 1)
    
    opened by toddyamakawa 2
  • j and k navigtion seems inverted

    j and k navigtion seems inverted

    Hello,

    Thanks a lot for this nice project, I have a small question concerning the navigation inside the CLI, I usually use j/k instead of arrows and it seems they are inverted compared to vi/vim style (j should goes down). Is this intentional and if so why ?

    Cheers, Charles

    opened by CharlesGueunet 2
  • registered_commands to accept partial commands

    registered_commands to accept partial commands

    I like to register a command with arguments and arguments could change, e.g. ls *.so ls /home/paperino

    I like to create one unique registered_commands for all of them, something like profiles:

    • name: ls args registered_commands:
      • ls *

    where the star is intended as a regular expression to match a set of arguments

    opened by michelepagot 1
  • Pretty confusing typo

    Pretty confusing typo

    Hi, it's not really worth a PR but on 2nd line of the Usage section of your readme, I think you wrote 'lazygit' instead of lazycli;

    Unless I misunderstood (in which case it should be clarified), this is a typo that can be very confusing!

    opened by michaelb 1
  • u option (cd) does not appear to do anything

    u option (cd) does not appear to do anything

    Hi,

    Just installed lazycli on Ubuntu 18.04 and tried it with ls -l. The u option does not appear to do anything. Is the intention to change directory of the terminal that is running lazycli?

    Thanks!

    opened by anvandaren 1
  • Surround arguments with ' in config file

    Surround arguments with ' in config file

    Hi,

    Just installed lazycli on Ubuntu 18.04 and tried it with ls -l. Operations for files that contain spaces does not work with the default config file as the argument is not surrounded by '. When I add that for example rm works. Example:

      - name: ls -l
        registered_commands:
          - ls -l
        key_bindings:
          - key: d
            command: rm -rf '$8'
            confirm: true
          - key: o
            command: xdg-open '$8'
          - key: u
            command: cd '$8'
        lines_to_skip: 1
    

    Thanks!

    opened by anvandaren 0
  • Config file default uses open command on linux

    Config file default uses open command on linux

    Hi!

    Just installed lazycli on Ubuntu 18.04 and tried it with ls -l. Typing $ does open the config file with xdg-open, but the default config file commands to open files is open, which on linux means openvt. It's easy to change to xdg-open manually, but it was a bit confusing first.

    Could it be possible to exchange the open command depending on the system it is installed on?

    opened by anvandaren 0
  • Let commands take over the terminal?

    Let commands take over the terminal?

    Is it possible to yield control of the terminal to each command when it runs? This would open up a bunch of new possibilities.

    1. Commands that use $EDITOR or $PAGER.
      • From an ls view, you could bind vim $0 or less $0 to a key. The editor would take over the terminal temporarily; when you quit the editor you'd be back in the same lazycli session.
      • From the git status view, you could run git commit and let the commit-message editor take over temporarily.
      • From git log you could run git show --patch to preview a commit.
    2. Commands that prompt for a second argument.
      • From ls, you could bind r to mv $0 $(read). Then to rename foo to bar you'd select foo, and type r bar<enter>.
      • Similarly, from git branch, you could bind git branch mv $0 $(read).

    I'm not sure how this would be implemented, but it might be similar to vim's :! command. As a (contrived) example, when you run :!htop, htop takes over the terminal; when you quit htop you end up back in vim again.

    opened by dpercy 0
  • $ not open config.yml on Windows

    $ not open config.yml on Windows

    I'm using lazycli 0.1.14 on a Windows10 machine. I do not have any default association for the .yml files. So, for example, if I try to

    start C:\Users\me\AppData\Roaming\lazycli\config\config.yml

    I get nothing but a OS popup that asks me to suggest my preferred application to edit the .yml files

    So within lazycli, $ has no effects at all, the low status bar quickly toggles between two messages, so the first one about "I'm using start" is barely visible. The Windows popup about file association does not appear when "start" is called by lazycli

    Code behind it seems like

    11 | #[cfg(target_os = "windows")] -- | -- 12 | pub fn open_command() -> String { 13 | String::from("start") 14 | }

    Unfortunately, I have no proposal about how to handle this situation or even if it has to be handled at all or code is fine like it is right now:

    • maybe using dear old notepad ?
    • maybe provide an environment variable to let the user to select its editor
    • maybe just try to figure out that nothing happened with "start" and try to better prompting that user?

    in any case, lazycli is a cool small doing one thing command: greater job

    opened by michelepagot 4
Owner
Jesse Duffield
Creator of lazygit, lazydocker, and horcrux.
Jesse Duffield
Workflows make it easy to browse, search, execute and share commands (or a series of commands)--without needing to leave your terminal.

Workflows The repo for all public Workflows that appear within Warp and within commands.dev. To learn how to create local or repository workflows, see

Warp 227 Jun 1, 2022
Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're working with files or directories, this tool simplifies common file operations with ease.

Rust FileOps Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're w

Harikesh Ranjan Sinha 5 May 2, 2024
🌌⭐cosmo is a wrapper for Git essentially, allowing you to compress multiple commands into one

❯ Cosmo Git tooling of the future New feature: Cosmo hooks! Click here for more info! ❯ ?? Features Config files (with defaults!) Fast Easy to use Fri

Jack 1 Oct 31, 2021
A Ratatui widget to turn any image to a splash screen in your terminal ✨

ratatui-splash-screen A Ratatui widget to turn any image to a splash screen in your terminal ✨ See the demo of gpg-tui for a real world example. Featu

Orhun Parmaksız 57 Jul 25, 2024
Save cli commands and fuzzy find them later

crow - cli command memorizer What is crow? | Installation | Usage | FAQ What is crow? crow (command row) is a CLI tool to help you memorize CLI comman

sandstorm 7 Feb 17, 2022
koyo is a cli tool that lets you run commands as another user. It is similar to doas or sudo.

koyo is a cli tool that lets you run commands as another user. It is similar to doas or sudo.

null 3 Nov 27, 2021
A cli tool that let's you map commands to a shorter alias

Runner ?? What is this? A cli tool that let's you map commands to a shorter alias. Run the mapped command using the <ALIAS_NAME>. runner <ALIAS_NAME>

Pratush Rai 3 Nov 30, 2022
GPT-3 powered CLI tool to help you remember bash commands.

Rusty: GPT-3 Powered CLI Tool Convert natural language into executable commands directly from the terminal! Open source CLI tool powered by OpenAI (br

Zahid Khawaja 287 Apr 19, 2023
Dash is a CLI tool that rapidly sets up new projects by running a series of pre-defined commands.

Dash Dash is a CLI tool that rapidly sets up new projects by running a series of pre-defined commands. Features Quick Initialization: Initialize the c

Kunal Bagaria 4 Nov 7, 2023
Upkeep your websites and web applications with ease from the comfort of the command line.

Upkeep Upkeep your websites and web applications with ease from the comfort of the command line. Explore the docs » View Demo · Report Bug · Request F

Kevin B 0 Dec 24, 2021
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.

Ember Ember is a simple and fun 2D rendering library for Rust, allowing you to quickly create graphics and interactive applications with ease. It uses

null 8 May 4, 2023
Manage your dotfiles and packages with ease. Define your $HOME as Code 💻 🚀 ✨

EnvHub is a simple tool to manage dotfiles and packages accross multiple machines. Written in Rust, internally it uses nix/homebrew/pkgx/devbox to man

Tsiry Sandratraina 8 Oct 27, 2023
🐢 Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands

Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.

Ellie Huxtable 4.6k Jan 1, 2023
🤖 just is a handy way to save and run project-specific commands.

just just is a handy way to save and run project-specific commands. (非官方中文文档,这里,快看过来!) Commands, called recipes, are stored in a file called justfile

Casey Rodarmor 8.2k Jan 5, 2023
1 library and 2 binary crates to run SSH/SCP commands on a "mass" of hosts in parallel

massh 1 library and 2 binary crates to run SSH/SCP commands on a "mass" of hosts in parallel. The binary crates are CLI and GUI "frontends" for the li

null 2 Oct 16, 2022
Lazygit - simple terminal UI for git commands

A simple terminal UI for git commands, written in Go with the gocui library. Rant time: You've heard it before, git is powerful, but what good is that

Jesse Duffield 31.8k Jan 3, 2023
Tldr - 📚 Collaborative cheatsheets for console commands

What is tldr-pages? The tldr-pages project is a collection of community-maintained help pages for command-line tools, that aims to be a simpler, more

tldr pages 42.4k Dec 29, 2022
Librarian runs pre-configured commands against a group of files that match a set of filters

Filesystem Librarian Librarian runs pre-configured commands against a group of files that match a set of filters. The group of files is called a libra

Jason Rogena 10 Dec 25, 2022