Update pip completion

This commit is contained in:
niris 2013-07-19 22:13:34 +08:00
parent c0a2c0c933
commit 52c096280e
1 changed files with 72 additions and 17 deletions

View File

@ -20,15 +20,15 @@ local ret=1 state
local -a common_ops local -a common_ops
common_ops=( common_ops=(
"--version[display version number]"
{-h,--help}"[show help]" {-h,--help}"[show help]"
{-E,--environment=}"[virtualenv environment to run pip]:environment:_directories"
{-s,--enable-site-packages}"[include site-packages in virtualenv]"
{-v,--verbose}"[give more output]" {-v,--verbose}"[give more output]"
{-V,--version}"[show version and exit]"
{-q,--quiet}"[give less output]" {-q,--quiet}"[give less output]"
"--log=[log file where a complete record will be kept]" "--log=[log file where a complete record will be kept]:file"
"--proxy=[specify a proxy in the form user:passwd@proxy.server:port]:proxy" "--proxy=[specify a proxy in the form user:passwd@proxy.server:port]:proxy"
"--timeout=[set the socket timeout (default 15 seconds)]:second" "--timeout=[set the socket timeout (default 15 seconds)]:second"
"--exists-action=[default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup]:action"
"--cert=[path to alternate CA bundle]:path"
) )
_directories () { _directories () {
@ -45,14 +45,16 @@ case $state in
subcommand) subcommand)
local -a subcommands local -a subcommands
subcommands=( subcommands=(
"bundle:create pybundle"
"freeze:put all currently installed packages"
"help:show available commands"
"install:install packages" "install:install packages"
"search:search pypi"
"uninstall:uninstall packages" "uninstall:uninstall packages"
"unzip:unzip undividual packages" "freeze:put all currently installed packages"
"list:list installed packages"
"show:show information about installed packages"
"search:search pypi"
"zip:zip dividual packages" "zip:zip dividual packages"
"unzip:unzip undividual packages"
"bundle:create pybundle"
"help:show available commands"
) )
_describe -t subcommands 'pip subcommand' subcommands && ret=0 _describe -t subcommands 'pip subcommand' subcommands && ret=0
@ -74,20 +76,50 @@ case $state in
{-f,--find-links=}"[URL to look for packages at]:url" {-f,--find-links=}"[URL to look for packages at]:url"
) )
local -a local_env
local_env=(
{-l,--local}"[If in a virtualenv that has global access, do not list globally-installed packages]"
)
local -a pi_ops
pi_ops=(
$findlink
{-i,--index-url=}"[base URL of Python Package Index]:URL"
{-M,--use-mirrors}"[use the PyPI mirrors as a fallback in case the main index is down]"
"--mirrors=[specific mirror URLs to query when --use-mirrors is used]:URL"
"--extra-index-url=[extra URLs of package indexes to use in addition to --index-url]:URL"
"--no-index[ignore package index (only looking at --find-links URLs instead)]"
)
case $words[1] in case $words[1] in
bundle | install) install | bundle)
args+=( args+=(
{-e,--editable=}"[install a package directly from a checkout]:VCS+REPOS_URL[@REV]#egg=PACKAGE" {-e,--editable=}"[install a package directly from a checkout]:VCS+REPOS_URL[@REV]#egg=PACKAGE"
$requirement $requirement
$findlink {-b,--build=}"[unpack packages into DIR]:directory:_directories"
{-i,--index-url=,--pypi-url=}"[base URL of Python Package Index]:URL" {-t,--target=}"[install packages into DIR]:directory:_directories"
"--extra-index-url=[extra URLs of package indexes to use]:URL" {-d,--download=}"[download packages into DIR instead of installing them]:directory:_directories"
{-b,--build=,--build-dir=}"[unpack packages into DIR]:directory:_directories" "--download-cache=[cache downloaded packages in DIR]:directory:_directories"
{--src=,--source=}"[check out --editable packages into DIR]:directory:_directories" "--src=[check out --editable packages into DIR]:directory:_directories"
{-U,--upgrade}"[upgrade all packages to the newest available version]" {-U,--upgrade}"[upgrade all packages to the newest available version]"
"--force-reinstall[when upgrading, reinstall all packages even if they are already up-to-date]"
{-I,--ignore-installed}"[ignore the installed packages]" {-I,--ignore-installed}"[ignore the installed packages]"
"--noinstall[download and unpack all packages, but don't actually install them]" "--no-deps[don't install package dependencies]"
"--install-option=[extra arguments to be supplied to the setup.py install command]" "--no-install[download and unpack all packages, but don't actually install them]"
"--no-download[don't download any packages, just install the ones already downloaded]"
"--install-option=[extra arguments to be supplied to the setup.py install command]:options"
"--global-option=[Extra global options to be supplied to the setup.py call before the install command]:options"
"--user[install using the user scheme]"
"--egg[install as self contained egg file, like easy_install does]"
"--root=[Install everything relative to this alternate root directory]:directory:_directories"
$pi_ops
)
;;
uninstall)
args+=(
$requirement
{-y,--yes}"[don't ask for confirmation of uninstall deletions]"
) )
;; ;;
@ -95,6 +127,29 @@ case $state in
args+=( args+=(
$requirement $requirement
$findlink $findlink
$local_env
)
;;
list)
args+=(
{-o,--outdated}"[list outdated packages (excluding editables)]"
{-u,--uptodated}"[list uptodated packages (excluding editables)]"
{-e,--editable}"[list editable projects]"
$local_env
$pi_ops
)
;;
show)
args+=(
{-f,--files}"[show the full list of installed files for each package]"
)
;;
search)
args+=(
"--index-url[base URL of Python Package Index]:URL"
) )
;; ;;