A CLI tool to get help with CLI tools 🐙

Overview

A CLI tool to get help with CLI tools 🐙

GitHub Release Crate Release Coverage
Continuous Integration Continuous Deployment Docker Builds Documentation

halp demo

halp aims to help find the correct arguments for command-line tools by checking the predefined list of commonly used options/flags. Additionally, it provides a prompt for quick access to the manual page or cheat sheet of the given command.

If you deal with command-line tools often, it might take some time to figure out how to get help or check the version of a particular command (especially when shell completions are not available). In that case, you might try the most-known flags such as -h and -v but unfortunately not all the command-line tools follow these conventions (either due to conflicts with other flags or they just use another form). Instead of brute-forcing manually into getting help, you can run halp <command> and it will check the following arguments for you:

  • for help: -h, --help, help, -H
  • for version info: -v, -V, --version, version

If one of these arguments succeeds (with exit code 0), it prints the output and exits. This way, you can get informed about the version and help in one single command. You can also customize this list with a configuration file or provide a list of arguments via command-line arguments.

On the other hand, if you really need help, you can use the plz subcommand which will prompt a selection for:

  1. show the man page (runs man(1))
  2. show the cheat sheet (via cheat.sh)
Table of Contents

Example

Have you ever experienced this:

$ cli_tool -v
unknown flag -v
$ cli_tool -V
unknown flag -V
$ cli_tool -h
unknown flag -h
$ asdjw1jwhdajh1idojad # frustration
bash: asdjw1jwhdajh1idojad: command not found
$ cli_tool --help # f*cking finally!
Some CLI Tool Version 1.42.69
Usage:
  cli_tool <flags> <args> [--parameter1 value1 --parameter2 value2 ...]

Whereas with halp:

$ halp cli_tool

(°ロ°)  checking 'cli_tool -v'
(×﹏×)      fail '-v' argument not found.
(°ロ°)  checking 'cli_tool -V'
(×﹏×)      fail '-V' argument not found.
(°ロ°)  checking 'cli_tool -h'
(×﹏×)      fail '-h' argument not found.
(°ロ°)  checking 'cli_tool --help'
\(^ヮ^)/ success '--help' argument found!

Some CLI Tool Version 1.42.69
Usage:
  cli_tool <flags> <args> [--parameter1 value1 --parameter2 value2 ...]

Installation

Packaging status

Packaging status

Cargo

halp can be installed from crates.io:

cargo install halp

The minimum supported Rust version is 1.64.0.

Arch Linux

halp can be installed from the community repository using pacman:

pacman -S halp

Or you can install the available AUR packages using an AUR helper. For example,

paru -S halp-git

Alternatively, you can clone the AUR package and then build it with makepkg. For example,

git clone https://aur.archlinux.org/halp-git.git && cd halp-git && makepkg -si

Docker

Images

Docker builds are automated and images are available in the following registries:

Usage

The following commands can be used to get help for a binary inside the container:

docker run --rm -it "orhunp/halp:${TAG:-latest}" whoami
docker run --rm -it "orhunp/halp:${TAG:-latest}" plz whoami

Or you can provide a custom binary as follows (please note that you might get shared library errors):

docker run -v "bin:/app/bin:rw" --rm -it "orhunp/halp:${TAG:-latest}" -v ./bin

Building

Custom Docker images can be built from the Dockerfile:

docker build -t halp .

Binary releases

See the available binaries for different targets from the releases page. They are automated via Continuous Deployment workflow

Release tarballs are signed with the following PGP key: 0xFB41AE0358378256

Build from source

  1. Clone the repository.
git clone https://github.com/orhun/halp && cd halp/
  1. Build.
CARGO_TARGET_DIR=target cargo build --release

Binary will be located at target/release/halp.

Usage

halp [OPTIONS] <CMD>
Options:
      --check <ARG>    Sets the argument to check
      --no-version     Disable checking the version information
      --no-help        Disable checking the help information
  -c, --config <PATH>  Sets the configuration file [env: HALP_CONFIG=]
  -v, --verbose        Enables verbose logging
  -h, --help           Print help
  -V, --version        Print version

plz

halp [OPTIONS] plz <CMD>
Options:
  -m, --man-cmd <MAN_CMD>  Sets the manual page command to run [default: man]
  -p, --pager <PAGER>      Sets the pager to use [default: "less -R"]
      --no-pager           Disables the pager

Examples

Check help and version (default)

halp whoami

halp example I

Check a custom argument

halp --check "\--silent" zps

(You can escape - with using \-.)

You can also provide multiple arguments as follows:

halp --check "help" --check "test" menyoki

Disable defaults

halp --no-version sha512sum
halp --no-help sha512sum

Verbose logging

halp --verbose git-cliff

This will result in stderr/stdout being printed if there was an error. For example:

(°ロ°)  checking 'git-cliff -v'
(×﹏×)      fail '-v' argument not found.
(o_O)      debug
stdout:
 WARN  git_cliff > "cliff.toml" is not found, using the default configuration.
 ERROR git_cliff > Git error: `could not find repository from '.'; class=Repository (6); code=NotFound (-3)`

Get additional help (via plz)

halp plz vim

halp example II

Custom pager
halp plz --pager bat vim

To disable the pager:

halp plz --no-pager bat vim

Configuration

halp can be configured with a configuration file that uses the TOML format. It can be specified via --config or HALP_CONFIG environment variable. It can also be placed in one of the following global locations:

  • <config_dir> / halp.toml
  • <config_dir> / halp/halp.toml
  • <config_dir> / halp/config

<config_dir> depends on the platform as shown in the following table:

Platform Value Example
Linux $XDG_CONFIG_HOME or $HOME/.config /home/orhun/.config
macOS $HOME/Library/Application Support /Users/Orhun/Library/Application Support
Windows {FOLDERID_RoamingAppData} C:\Users\Orhun\AppData\Roaming

See halp.toml for the default configuration values.

Funding

If you find halp and/or other projects on my GitHub profile useful, consider supporting me on GitHub Sponsors or becoming a patron!

Support me on GitHub Sponsors Support me on Patreon Support me on Patreon

Contributing

See our Contribution Guide and please follow the Code of Conduct in all your interactions with the project.

License

Licensed under either of Apache License Version 2.0 or The MIT License at your option.

Copyright

Copyright © 2023, Orhun Parmaksız

Comments
  • chore(deps): bump clap from 4.1.8 to 4.1.9

    chore(deps): bump clap from 4.1.8 to 4.1.9

    Bumps clap from 4.1.8 to 4.1.9.

    Changelog

    Sourced from clap's changelog.

    [4.1.9] - 2023-03-16

    Fixes

    • (assert) Improve the assert when using the wrong action with get_count / get_flag
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 9
  • chore(deps): bump clap_complete from 4.1.4 to 4.1.5

    chore(deps): bump clap_complete from 4.1.4 to 4.1.5

    Bumps clap_complete from 4.1.4 to 4.1.5.

    Changelog

    Sourced from clap_complete's changelog.

    [4.1.5] - 2023-02-15

    Fixes

    • (help) Don't show long help for --help just because a hidden arg has a possible value with a description
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 9
  • feat(args): check `version` subcommand for version info

    feat(args): check `version` subcommand for version info

    Description

    This PR adds version subcommand to the list of arguments to check for version info.

    Motivation and Context

    e.g. zig binary doesn't have a flag for getting the version information. It requires to run zig version.

    How Has This Been Tested?

    -

    Screenshots / Logs (if applicable)

    -

    Types of Changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] Documentation (no code change)
    • [ ] Refactor (refactoring production code)
    • [ ] Other

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] I have updated the documentation accordingly.
    • [x] I have formatted the code with rustfmt.
    • [x] I checked the lints with clippy.
    • [ ] I have added tests to cover my changes.
    • [x] All new and existing tests passed.
    opened by orhun 8
  • chore(deps): bump toml from 0.7.2 to 0.7.3

    chore(deps): bump toml from 0.7.2 to 0.7.3

    Bumps toml from 0.7.2 to 0.7.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 7
  • chore(deps): bump serde from 1.0.153 to 1.0.154

    chore(deps): bump serde from 1.0.153 to 1.0.154

    Bumps serde from 1.0.153 to 1.0.154.

    Release notes

    Sourced from serde's releases.

    v1.0.154

    • Fix "undeclared lifetime" error in generated code when deriving Deserialize for an enum with both flatten and 'static fields (#2383, thanks @​Mingun)
    Commits
    • 6a5da85 Release 1.0.154
    • 0750eee Merge pull request #2383 from Mingun/fix-flatten+static
    • ef551a5 Merge pull request #2389 from dtolnay/trimstart
    • 1c5ea24 Replace use of deprecated trim_left_matches with trim_start_matches
    • 88d73e5 Format PR 2387 with rustfmt
    • 1ff2a97 Merge pull request #2388 from serde-rs/exhaustivepatterns
    • bb72fe2 Update the comment on simpler exhaustive matching in derive
    • 38c130a Do not generate DeserializeSeed impl when not needed
    • c739361 Fix generation of non-existent lifetime 'de when enum contains a #[serde(flat...
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 6
  • chore(deps): bump thiserror from 1.0.39 to 1.0.40

    chore(deps): bump thiserror from 1.0.39 to 1.0.40

    Bumps thiserror from 1.0.39 to 1.0.40.

    Release notes

    Sourced from thiserror's releases.

    1.0.40

    • Update syn dependency to 2.x
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 5
  • chore(deps): bump serde from 1.0.154 to 1.0.155

    chore(deps): bump serde from 1.0.154 to 1.0.155

    Bumps serde from 1.0.154 to 1.0.155.

    Release notes

    Sourced from serde's releases.

    v1.0.155

    • Support Serialize and Deserialize impls for core::ffi::CStr and alloc::ffi::CString without "std" feature (#2374, thanks @​safarir)
    Commits
    • 2ba4067 Release 1.0.155
    • 7e9826e Add link to core CStr stabilization announcement
    • f4dcc5c Merge pull request #2374 from safarir/master
    • 8b1887c Remove unneeded attr_name argument when parsing borrow attr
    • bbfb1d3 Merge pull request #2399 from dtolnay/borrow
    • e106feb Eagerly parse variant-level borrow attribute instead of deferring entire Meta
    • 696f6f5 Merge pull request #2398 from dtolnay/borrow
    • b7b636a Treat field-level borrow attr as duplicate of variant-level borrow attr
    • 183b917 Fix some comments in parsing of from/try_from/into attributes
    • 0e70f59 Merge pull request #2396 from dtolnay/msg
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 5
  • chore(deps): bump serde from 1.0.156 to 1.0.158

    chore(deps): bump serde from 1.0.156 to 1.0.158

    ⚠️ Dependabot is rebasing this PR ⚠️

    Rebasing might not happen immediately, so don't worry if this takes some time.

    Note: if you make any changes to this PR yourself, they will take precedence over the rebase.


    Bumps serde from 1.0.156 to 1.0.158.

    Release notes

    Sourced from serde's releases.

    v1.0.158

    • Fix "expected serde crate attribute to be a string" error when using macro_rules metavariable inside of serde attribute: #[serde(crate = $serde_path)] (#2409)

    v1.0.157

    • Update syn dependency to 2.x
    Commits
    • e305810 Release 1.0.158
    • dc200a6 Reformat comments of non-public serde_derive internals
    • 2c0999a Merge pull request #2410 from serde-rs/attrvalue
    • dd460f8 Check for None-delimited group in attribute value
    • c3d637f Add regression test for issue 2409
    • 479a00a Release 1.0.157
    • c42e7c8 Reflect serde_derive required compiler in build script and rust-version metadata
    • 5b8e065 Ignore single_match_else pedantic clippy lint in serde_derive_internals
    • 9fc0d13 Merge pull request #2406 from dtolnay/nestedmeta
    • bc22641 Rewrite attribute parser using parse_nested_meta
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 3
  • chore(deps): bump clap_mangen from 0.2.9 to 0.2.10

    chore(deps): bump clap_mangen from 0.2.9 to 0.2.10

    Bumps clap_mangen from 0.2.9 to 0.2.10.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    dependencies rust 
    opened by dependabot[bot] 3
  • fix(cheat): don't use a pager when no cheat sheet found for the command

    fix(cheat): don't use a pager when no cheat sheet found for the command

    Description

    cheat.sh doesn't return 404: https://github.com/chubin/cheat.sh/issues/198

    Motivation and Context

    How Has This Been Tested?

    $ cargo run plz 42
       Compiling halp v0.1.3 (/home/figsoda/halp)
        Finished dev [unoptimized + debuginfo] target(s) in 0.37s
         Running `target/debug/halp plz 42`
    ❤ Select operation · Show cheat sheet
    Unknown topic.
    Do you mean one of these topics maybe?
    
        * m4 50
        * p4 50
        * r2 50
        
    
    (ノ´ヮ`)ノ*: ・゚
     Select operation ›
      Show man page
    ✧ Show cheat sheet
      Exit
    

    Screenshots / Logs (if applicable)

    Types of Changes

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] Documentation (no code change)
    • [ ] Refactor (refactoring production code)
    • [ ] Other

    Checklist:

    • [x] My code follows the code style of this project.
    • [ ] I have updated the documentation accordingly.
    • [x] I have formatted the code with rustfmt.
    • [x] I checked the lints with clippy.
    • [ ] I have added tests to cover my changes.
    • [x] All new and existing tests passed.
    opened by figsoda 3
  • chore(deps): bump clap from 4.2.1 to 4.2.2

    chore(deps): bump clap from 4.2.1 to 4.2.2

    Bumps clap from 4.2.1 to 4.2.2.

    Release notes

    Sourced from clap's releases.

    v4.2.2

    [4.2.2] - 2023-04-13

    Internal

    • Update dependencies
    Changelog

    Sourced from clap's changelog.

    [4.2.2] - 2023-04-13

    Internal

    • Update dependencies
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 2
  • Add the ability to use more types of manuals/cheatsheets

    Add the ability to use more types of manuals/cheatsheets

    Is your feature request related to a problem? Please describe.

    Sort of, in general it's just annoying to have to exit halp and type in the next command(s) manually.

    There are more manual pages and cheat sheets that are not directly covered by halp and it would be useful for halp to use more types. In #2 tldr is requested and there are similar things you can do with other commands, such as cheat, navi, command line interface pages, kb (kb would require extra work, so the config option wouldn't help much), and eg.

    Describe the solution you'd like

    halp should have the option to integrate at least some of these options. A simple configuration option would work for most of these, but kb in particular would require more work.

    Describe alternatives you've considered

    I could replace "man_command" in the config, but that removes the man functionality. Also, you can of course type it by hand but that defeats the purpose.

    If you want, I can create a PR myself integrating some of these.

    enhancement 
    opened by Sawbez 1
  • Add separator for command outputs

    Add separator for command outputs

    Is your feature request related to a problem? Please describe.

    @-Redstoneboi- on Reddit:

    success '--version' argument found!
    whoami (GNU Coreutils) 9.1
    Copyright info
    License info
    Written by author
    checking sometool -h
    

    kinda makes it look like halp was written by the author of whoami

    Describe the solution you'd like

    try this or something

    success '--version' argument found!
    ---
    whoami (GNU Coreutils) 9.1
    Copyright info
    License info
    Written by author
    ---
    checking sometool -h
    

    Describe alternatives you've considered

    None.

    Additional context

    • https://www.reddit.com/r/rust/comments/11pc70n/comment/jbxwte8/?utm_source=share&utm_medium=web2x&context=3
    enhancement good first issue 
    opened by orhun 0
  • Incorporate documentation from tldr

    Incorporate documentation from tldr

    Using documentation

    Great to use man pages, trying -h/--help, but there is also information at the tldr project that you could be tapping into: https://github.com/tldr-pages/tldr

    Describe the solution you'd like

    Next to the man page, offer a direct dive into the alternate documentation of tldr.

    Describe alternatives you've considered

    Just bypass halp and use tldr directly, but halp could be a one-stop solution, so people don't need to download tldr or the tldr archives themselves.

    enhancement 
    opened by pepa65 6
Releases(v0.1.5)
Owner
Orhun Parmaksız
FOSS developer, @archlinux package maintainer, oxidizing things with @rust-lang
Orhun Parmaksız
⚙️ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.

This repository lists static analysis tools for all programming languages, build tools, config files and more. The official website, analysis-tools.de

Analysis Tools 10.7k Jan 2, 2023
A CLI tool to get World Cup 2022 tweets for Japanese fans.

samuraicup A CLI tool to get World Cup 2022 tweets for Japanese fans. 仕事中にワールドカップをばれないように見る、CLI ツールを Rust で作ってみた こんにちは、ekusiadadus です。 日本が死の組をまさかの一位通過

ekusiadadus 3 Dec 10, 2022
⚡️Blazing Fast⚡️ CLI tool to get Bible verses with Rust 🦀

bible.rs This is a simple command line tool that accesses bible-api.com to print Bible verses in the terminal Installation brew install wzid/tap/bible

cameron 3 Apr 3, 2023
A CLI tool which can help you automatically kill process of your choice. Useful for freeing up memory and CPU usage!

Quickiller There are always programs such as chrome that keep eating up your resources even when closed! The only way to prevent this is to kill all o

Codingsquirrel 1 Dec 8, 2021
A simple cli tool to help with wordle in hard mode

Wordking A simple cli tool to help with wordle in hard mode. Usage Run wordking cargo run Wordking will ask for your guesses thus far. Provide your gu

Stephen Spalding 2 Feb 1, 2022
A CLI tool connected to GPT-3 to help find the right terminal command

Command Recall A CLI tool connected to GPT-3 to help find the right terminal command Install to install the cli: cargo install --git https://github.co

Camille Moatti 102 Feb 18, 2023
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
Rust-powered CLI tool designed to simplify and streamline the release process with help of ChatGPT

$ releasecraftsman ????‍♂️?? Automate Your Release Process with Precision and Ease. ?? Features Generate well-crafted release notes using GPT-3.5 and

Tornike Gomareli 7 Sep 21, 2023
ruborute is an interactive command-line tool to get asphyxia@sdvx gaming data.

ruborute Are you 暴龍天 ?. The ruborute is an interactive command-line tool to get asphyxia@sdvx gaming data. asphyxia-core/plugins: https://github.com/a

RinChanNOW! 9 Sep 28, 2022
🍅 A command-line tool to get and set values in toml files while preserving comments and formatting

tomato Get, set, and delete values in TOML files while preserving comments and formatting. That's it. That's the feature set. I wrote tomato to satisf

C J Silverio 15 Dec 23, 2022
Introducing Inlyne, a GPU powered yet browsless tool to help you quickly view markdown files in the blink of an eye.

Inlyne - a GPU powered, browserless, markdown + html viewer inlyne README.md --theme dark/light About Markdown files are a wonderful tool to get forma

null 308 Jan 1, 2023
STKLR is a tool to help you automatically link up named stuff in your rust docs!

_____ _______ _ ___ _____ / ____|__ __| |/ / | | __ \ | (___ | | | ' /| | | |__) | \___ \ | | | < | | | _ / ___

Jer 3 Oct 25, 2022
A CLI utility installed as "ansi" to quickly get ANSI escape sequences. Supports the most basic ones, like colors and styles as bold or italic.

'ansi' - a CLI utility to quickly get ANSI escape codes This Rust project called ansi-escape-sequences-cli provides an executable called ansi which ca

Philipp Schuster 5 Jul 28, 2022
laydown is a simple CLI application to help you prepare for your next Daily Standup

laydown is a simple CLI application to help you prepare for your next Daily Standup. No longer shall your name be called on only for you to stare into the abyss while you struggle to remember what you did yesterday.

badjr13 83 Dec 26, 2022
This CLI will help you improve your typing accuracy and speed

This CLI will help you improve your typing accuracy and speed! Improve your personal bests and look back on your previous records in a graph. All in the convenience of your own terminal!

Mitchel Wijt 8 May 25, 2023
Tool to create web interfaces to command-line tools

webgate This command line utility allows you to: serve files and directories listed in a config file remotely run shell commands listed in a config fi

Nathan Royer 2 Jan 8, 2022
CLI tools to process cryptocurrency data

crypto-cli-tools A collection of CLI tools to process cryptocurrency data. Install: RUSTFLAGS="-C target-cpu=native" cargo install crypto-cli-tools cr

soulmachine 2 Mar 23, 2022
IntMaxRollup operator node & cli tools.

Intmax Rollup Operator Int max operator node Prepara Install rustup. rustup override set nightly

null 5 Jul 26, 2022
Little example projects for learning Rust and building awesome cli tools! ⭐️

rust-cli-examples Examples of clean and well-tested command line utilities, written in Rust. ?? ?? What is this repo? This repo is a collection of man

Jim Lynch 5 Mar 31, 2023