mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-26 03:04:06 +00:00
123 lines
5.8 KiB
Fish
123 lines
5.8 KiB
Fish
# Completions for phpenv command
|
|
# Place in ~/.config/fish/completions/phpenv.fish
|
|
|
|
# Complete main commands
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "install" -d "Install a PHP version"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "uninstall" -d "Uninstall a PHP version"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "use" -d "Use PHP version for current shell"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "local" -d "Set PHP version for current project"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "global" -d "Set global PHP version"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "list" -d "List installed PHP versions"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "ls" -d "List installed PHP versions"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "current" -d "Show current PHP version"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "which" -d "Show path to PHP binary"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "versions" -d "Show all available versions"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "doctor" -d "Check phpenv installation"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "config" -d "Manage configuration"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "extensions" -d "Manage PHP extensions"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "ext" -d "Manage PHP extensions"
|
|
complete -c phpenv -f -n "__fish_use_subcommand" -a "help" -d "Show help"
|
|
|
|
# Helper functions for completions
|
|
function __phpenv_complete_installed_versions
|
|
phpenv list 2>/dev/null | sed 's/^[* ]*//'
|
|
end
|
|
|
|
function __phpenv_complete_available_versions
|
|
# Try to get dynamic versions first
|
|
if command -q curl -a command -q jq; and functions -q __phpenv_parse_version_field
|
|
echo "latest"
|
|
echo "nightly"
|
|
echo "5.x"
|
|
echo "7.x"
|
|
echo "8.x"
|
|
__phpenv_parse_version_field "latest" "8.4"
|
|
__phpenv_parse_version_field "nightly" "8.5"
|
|
__phpenv_parse_version_field "5.x" "5.6"
|
|
__phpenv_parse_version_field "7.x" "7.4"
|
|
__phpenv_parse_version_field "8.x" "8.4"
|
|
end
|
|
|
|
# Fallback to common versions
|
|
printf "5.6\n7.0\n7.1\n7.2\n7.3\n7.4\n8.0\n8.1\n8.2\n8.3\n8.4\n8.5\n"
|
|
end
|
|
|
|
function __phpenv_complete_config_keys
|
|
printf "global-version\nauto-install\nauto-install-extensions\nauto-switch\ndefault-extensions\n"
|
|
end
|
|
|
|
function __phpenv_complete_extensions
|
|
printf "xdebug\nredis\nimagick\nmongodb\nmemcached\npcov\nast\ngrpc\n"
|
|
printf "protobuf\nyaml\nzip\ncurl\ngd\nintl\nmbstring\nmysql\nopcache\npdo\nsockets\nxml\n"
|
|
end
|
|
|
|
function __phpenv_complete_binaries
|
|
printf "php\nphp-config\nphpize\ncomposer\npecl\npear\n"
|
|
end
|
|
|
|
# Complete versions for install command
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from install" \
|
|
-a "(__phpenv_complete_available_versions)" -d "PHP version"
|
|
|
|
# Complete installed versions for uninstall, use commands
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from uninstall use local global" \
|
|
-a "(__phpenv_complete_installed_versions)" -d "Installed PHP version"
|
|
|
|
# Add system option for use command
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from use" -a "system" -d "Use system PHP"
|
|
|
|
# Complete binaries for which command
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from which" -a "(__phpenv_complete_binaries)" -d "PHP binary"
|
|
|
|
# Complete config subcommands
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
|
-a "get" -d "Get configuration value"
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
|
-a "set" -d "Set configuration value"
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and not __fish_seen_subcommand_from get set list" \
|
|
-a "list" -d "List all configuration"
|
|
|
|
# Complete config keys
|
|
complete -c phpenv -f -n "__fish_seen_subcommand_from config; and __fish_seen_subcommand_from get set" \
|
|
-a "(__phpenv_complete_config_keys)" -d "Configuration key"
|
|
|
|
# Complete config values for boolean settings
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from config; and __fish_seen_subcommand_from set" \
|
|
-n "contains -- (commandline -opc)[-1] auto-install auto-install-extensions auto-switch" \
|
|
-a "true false" -d "Boolean value"
|
|
|
|
# Complete extensions subcommands
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from extensions ext" \
|
|
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
|
-a "install" -d "Install PHP extension"
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from extensions ext" \
|
|
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
|
-a "uninstall" -d "Uninstall PHP extension"
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from extensions ext" \
|
|
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
|
-a "remove" -d "Remove PHP extension"
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from extensions ext" \
|
|
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
|
-a "list" -d "List installed extensions"
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from extensions ext" \
|
|
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
|
-a "ls" -d "List installed extensions"
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from extensions ext" \
|
|
-n "not __fish_seen_subcommand_from install uninstall remove list ls available" \
|
|
-a "available" -d "Show available extensions"
|
|
|
|
# Complete extension names
|
|
complete -c phpenv -f \
|
|
-n "__fish_seen_subcommand_from extensions ext; and __fish_seen_subcommand_from install" \
|
|
-a "(__phpenv_complete_extensions)" -d "PHP extension"
|
|
|
|
# Complete help options
|
|
complete -c phpenv -f -s h -l help -d "Show help"
|