From 8b55fb3b60e885934745b03d8fd550c6eaa82121 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Thu, 8 Apr 2021 13:59:57 +0800 Subject: feat(command-not-found): add support for Homebrew on Apple M1 (#9797) --- plugins/command-not-found/command-not-found.plugin.zsh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'plugins/command-not-found') diff --git a/plugins/command-not-found/command-not-found.plugin.zsh b/plugins/command-not-found/command-not-found.plugin.zsh index aea1e1b4c..10f3a6277 100644 --- a/plugins/command-not-found/command-not-found.plugin.zsh +++ b/plugins/command-not-found/command-not-found.plugin.zsh @@ -38,10 +38,13 @@ if [ -f /usr/libexec/pk-command-not-found ]; then } fi -# OSX command-not-found support +# macOS command-not-found support # https://github.com/Homebrew/homebrew-command-not-found -if [[ -s '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh' ]]; then - source '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh' +HB_CNF_HANDLER_SUFFIX="Library/Taps/homebrew/homebrew-command-not-found/handler.sh" +if [[ -s "/opt/homebrew/$HB_CNF_HANDLER_SUFFIX" ]]; then + source "/opt/homebrew/$HB_CNF_HANDLER_SUFFIX" +elif [[ -s "/usr/local/Homebrew/$HB_CNF_HANDLER_SUFFIX" ]]; then + source "/usr/local/Homebrew/$HB_CNF_HANDLER_SUFFIX" fi # NixOS command-not-found support -- cgit v1.2.3-70-g09d2 From b54a6dab9cc9db9196aae5d8bc53ac3956855ecf Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Fri, 9 Apr 2021 21:21:57 +0200 Subject: refactor(command-not-found): clean up and reorganize logic --- .../command-not-found/command-not-found.plugin.zsh | 94 +++++++++++----------- 1 file changed, 47 insertions(+), 47 deletions(-) (limited to 'plugins/command-not-found') diff --git a/plugins/command-not-found/command-not-found.plugin.zsh b/plugins/command-not-found/command-not-found.plugin.zsh index 10f3a6277..8fdc8a647 100644 --- a/plugins/command-not-found/command-not-found.plugin.zsh +++ b/plugins/command-not-found/command-not-found.plugin.zsh @@ -1,55 +1,55 @@ -# Uses the command-not-found package zsh support -# as seen in https://www.porcheron.info/command-not-found-for-zsh/ -# this is installed in Ubuntu +## Platforms with a built-in command-not-found handler init file + +for file ( + # Arch Linux. Must have pkgfile installed: https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found + /usr/share/doc/pkgfile/command-not-found.zsh + # macOS (M1 and classic Homebrew): https://github.com/Homebrew/homebrew-command-not-found + /opt/homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh + /usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh +); do + if [[ -r "$file" ]]; then + source "$file" + unset file + return 0 + fi +done +unset file -if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then - function command_not_found_handler { - # check because c-n-f could've been removed in the meantime - if [ -x /usr/lib/command-not-found ]; then - /usr/lib/command-not-found -- "$1" - return $? - elif [ -x /usr/share/command-not-found/command-not-found ]; then - /usr/share/command-not-found/command-not-found -- "$1" - return $? - else - printf "zsh: command not found: %s\n" "$1" >&2 - return 127 - fi - return 0 - } -fi -# Arch Linux command-not-found support, you must have package pkgfile installed -# https://wiki.archlinux.org/index.php/Pkgfile#.22Command_not_found.22_hook -[[ -e /usr/share/doc/pkgfile/command-not-found.zsh ]] && source /usr/share/doc/pkgfile/command-not-found.zsh +## Platforms with manual command_not_found_handler() setup -# Fedora command-not-found support -if [ -f /usr/libexec/pk-command-not-found ]; then - command_not_found_handler() { - runcnf=1 - retval=127 - [ ! -S /var/run/dbus/system_bus_socket ] && runcnf=0 - [ ! -x /usr/libexec/packagekitd ] && runcnf=0 - if [ $runcnf -eq 1 ]; then - /usr/libexec/pk-command-not-found $@ - retval=$? - fi - return $retval - } +# Debian and derivatives: https://launchpad.net/ubuntu/+source/command-not-found +if [[ -x /usr/lib/command-not-found || -x /usr/share/command-not-found/command-not-found ]]; then + command_not_found_handler() { + if [[ -x /usr/lib/command-not-found ]]; then + /usr/lib/command-not-found -- "$1" + return $? + elif [[ -x /usr/share/command-not-found/command-not-found ]]; then + /usr/share/command-not-found/command-not-found -- "$1" + return $? + else + printf "zsh: command not found: %s\n" "$1" >&2 + return 127 + fi + } fi -# macOS command-not-found support -# https://github.com/Homebrew/homebrew-command-not-found -HB_CNF_HANDLER_SUFFIX="Library/Taps/homebrew/homebrew-command-not-found/handler.sh" -if [[ -s "/opt/homebrew/$HB_CNF_HANDLER_SUFFIX" ]]; then - source "/opt/homebrew/$HB_CNF_HANDLER_SUFFIX" -elif [[ -s "/usr/local/Homebrew/$HB_CNF_HANDLER_SUFFIX" ]]; then - source "/usr/local/Homebrew/$HB_CNF_HANDLER_SUFFIX" +# Fedora: https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound +if [[ -x /usr/libexec/pk-command-not-found ]]; then + command_not_found_handler() { + if [[ -S /var/run/dbus/system_bus_socket && -x /usr/libexec/packagekitd ]]; then + /usr/libexec/pk-command-not-found -- "$@" + return $? + fi + + printf "zsh: command not found: %s\n" "$1" >&2 + return 127 + } fi -# NixOS command-not-found support -if [ -x /run/current-system/sw/bin/command-not-found ]; then - command_not_found_handler() { - /run/current-system/sw/bin/command-not-found $@ - } +# NixOS: https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/command-not-found +if [[ -x /run/current-system/sw/bin/command-not-found ]]; then + command_not_found_handler() { + /run/current-system/sw/bin/command-not-found -- "$@" + } fi -- cgit v1.2.3-70-g09d2 From 6ae78695efa8c222d716db267041f3ad19114d98 Mon Sep 17 00:00:00 2001 From: Mario A Date: Sun, 14 Feb 2021 14:44:59 +0100 Subject: feat(command-not-found): add support for Termux (#9666) --- plugins/command-not-found/README.md | 1 + plugins/command-not-found/command-not-found.plugin.zsh | 7 +++++++ 2 files changed, 8 insertions(+) (limited to 'plugins/command-not-found') diff --git a/plugins/command-not-found/README.md b/plugins/command-not-found/README.md index 1cf4ba66e..f267f0c89 100644 --- a/plugins/command-not-found/README.md +++ b/plugins/command-not-found/README.md @@ -28,5 +28,6 @@ It works out of the box with the command-not-found packages for: - [macOS (Homebrew)](https://github.com/Homebrew/homebrew-command-not-found) - [Fedora](https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound) - [NixOS](https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/command-not-found) +- [Termux](https://github.com/termux/command-not-found) You can add support for other platforms by submitting a Pull Request. diff --git a/plugins/command-not-found/command-not-found.plugin.zsh b/plugins/command-not-found/command-not-found.plugin.zsh index 8fdc8a647..cbf9a0a8e 100644 --- a/plugins/command-not-found/command-not-found.plugin.zsh +++ b/plugins/command-not-found/command-not-found.plugin.zsh @@ -53,3 +53,10 @@ if [[ -x /run/current-system/sw/bin/command-not-found ]]; then /run/current-system/sw/bin/command-not-found -- "$@" } fi + +# Termux: https://github.com/termux/command-not-found +if [[ -x /data/data/com.termux/files/usr/libexec/termux/command-not-found ]]; then + command_not_found_handler() { + /data/data/com.termux/files/usr/libexec/termux/command-not-found -- "$1" + } +fi -- cgit v1.2.3-70-g09d2