8 releases

new 0.1.7 Mar 13, 2025
0.1.6 Jan 26, 2025
0.1.3 Dec 17, 2024

#8 in #suggestions

Download history 387/week @ 2024-12-04 198/week @ 2024-12-11 122/week @ 2024-12-18 2/week @ 2024-12-25 200/week @ 2025-01-01 92/week @ 2025-01-08 8/week @ 2025-01-15 104/week @ 2025-01-22 34/week @ 2025-01-29 16/week @ 2025-02-05 16/week @ 2025-02-12 24/week @ 2025-02-19 5/week @ 2025-02-26 6/week @ 2025-03-05

51 downloads per month
Used in 2 crates

MPL-2.0 license

12KB
340 lines

Pay Respects

Typed a wrong command or don't know what to do? Pay Respects will suggest a fix to your console command by simply pressing F!

  • 🚀 Blazing fast suggestion: You won't notice any delay for asking suggestions!
  • ðŸŽŊ Accurate results: Suggestions are verified before being prompted to the user, no sudo suggestions when you are using doas!
  • ✏ïļ Easy to write rules: You don't need to know Rust. The rules are written in a TOML file!
  • ðŸ”Đ Modular: TOML not your taste? Add sources using your favorite language with a custom module!
  • ðŸĪ– AI Support: AI module comes in aid when there is no rule for your error!
  • ðŸŠķ Tiny binary size: Not even 1MB for core features!

showcase

How to Pay Respects

Please follow the instruction for your shell:

Bash / Zsh / Fish

Append the following line to your configuration file:

eval "$(pay-respects bash --alias)"
eval "$(pay-respects zsh --alias)"
pay-respects fish --alias | source

Arguments:

  • --alias [alias]: Alias to a custom key, defaults to f
  • --nocnf: Disables command_not_found handler

Manual aliasing (DEPRECATED, do not use):

alias f="$(pay-respects bash)"
alias f="$(pay-respects zsh)"
alias f="$(pay-respects fish)"
Nushell

Add the following output to your configuration file:

pay-respects nushell --alias [<alias>]

Or save it as a file:

pay-respects nushell --alias [<alias>] | save -f ~/.pay-respects.nu

and source from your config file:

source ~/.pay-respects.nu
PowerShell

Append the following output to your profile:

pay-respects pwsh --alias [<alias>] [--nocnf]

Or directly pipe the output to your profile:

pay-respects pwsh --alias [<alias>] [--nocnf] >> $PROFILE
Custom initialization for arbitrary shell

pay-respects only requires 2 environment variables to function:

  • _PR_SHELL: The binary name of the current working shell.
  • _PR_LAST_COMMAND: The last command.

pay-respects echos back, if applicable, a cd command that can be evaluated by the current working shell.

General example:

eval $(_PR_SHELL=sh _PR_LAST_COMMAND="git comit" pay-respects)

Following variables are not required, but can be used to reduce unnecessary operations:

  • _PR_ALIAS: A list of aliases to commands. Separated by newlines with zsh-like formatting, e.g. gc=git commit
  • _PR_ERROR_MSG: Error message from the previous command. pay-respects will rerun previous command to get the error message if absent
  • _PR_EXECUTABLES: A space separated list of commands/executables. pay-respects will search for $PATH if absent
Environment variable configurations
  • _PR_LIB: Directory of modules, analogous to PATH. If not provided, search in PATH or compile-time provided value.
  • _PR_PACKAGE_MANAGER: Use defined package manager instead of auto-detecting alphabetically

You can now press F to Pay Respects!

Installing

Install from your package manager if available:

Packaging status

Instructions for package managers
OS / Distribution Repository Instructions
Arch Linux AUR paru -S pay-respects (-bin)
Arch Linux (ARM) Arch Linux CN sudo pacman -S pay-respects
MacOS / Any timescam brew install timescam/homebrew-tap/pay-respects
NixOS / Any nixpkgs nix-env -iA nixos.pay-respects

Alternatively, install pre-built binaries from GitHub releases. An install script is available:

curl -sSfL https://raw.githubusercontent.com/iffse/pay-respects/main/install.sh | sh
Cargo / Compile from source (any OS/architecture supported by Rust)

This installation requires you to have Cargo (the Rust package manager) installed.

Install from crates.io, modules are optional

cargo install pay-respects
cargo install pay-respects-module-runtime-rules
cargo install pay-respects-module-request-ai

Clone from git and install, suitable for adding custom compile-time rules:

git clone --depth 1 https://github.com/iffse/pay-respects
cd pay-respects
cargo install --path core
cargo install --path module-runtime-rules
cargo install --path module-request-ai

Rules & Modules

See the following pages:

AI Integration

Disclaimer: You are using AI generated content on your own risk. Please double-check its suggestions before accepting.

AI suggestions should work out of the box with request-ai module installed.

An API key is included with the source (your distribution might have stripped them out). It should always work unless I can no longer afford this public service or rate limits are reached. If it's useful to you, please share this project and spread the word. Also consider making a donation to keep its public usage alive:

Donate using Liberapay Donate using Ko-fi
Donate using Stripe Donate using PayPal

AI and API configurations

Contributing

Current option to write rules should cover most of the cases.

We need more rule files, contributions are welcomed!

Also see development status for contribution opportunities.

This project is hosted at various sites, choose the one that suits you best:

Licenses

  • Binaries: AGPL-3.0
    • Core and modules
  • Libraries: MPL-2.0
    • Parser and utils

Dependencies

~1MB
~14K SLoC