# 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"