_gem 2.45 KB
Newer Older
1
2
3
4
5
6
#compdef gem
#autoload

# gem zsh completion, based on homebrew completion

_gem_installed() {
dongweiming's avatar
dongweiming committed
7
  installed_gems=(${(f)"$(gem list --local --no-versions)"})
8
9
10
}

local -a _1st_arguments
dongweiming's avatar
dongweiming committed
11

12
_1st_arguments=(
13
  'build:Build a gem from a gemspec'
14
  'cert:Manage RubyGems certificates and signing settings'
15
  'check:Check a gem repository for added or missing files'
16
17
18
19
20
21
22
23
24
25
  'cleanup:Clean up old versions of installed gems in the local repository'
  'contents:Display the contents of the installed gems'
  'dependency:Show the dependencies of an installed gem'
  'environment:Display information about the RubyGems environment'
  'fetch:Download a gem and place it in the current directory'
  'generate_index:Generates the index files for a gem server directory'
  'help:Provide help on the `gem` command'
  'install:Install a gem into the local repository'
  'list:Display gems whose name starts with STRING'
  'lock:Generate a lockdown list of gems'
26
  'mirror:Mirror all gem files (requires rubygems-mirror)'
27
28
29
30
31
32
33
34
35
36
37
38
39
  'outdated:Display all gems that need updates'
  'owner:Manage gem owners on RubyGems.org.'
  'pristine:Restores installed gems to pristine condition from files located in the gem cache'
  'push:Push a gem up to RubyGems.org'
  'query:Query gem information in local or remote repositories'
  'rdoc:Generates RDoc for pre-installed gems'
  'search:Display all gems whose name contains STRING'
  'server:Documentation and gem repository HTTP server'
  'sources:Manage the sources and cache file RubyGems uses to search for gems'
  'specification:Display gem specification (in yaml)'
  'stale:List gems along with access times'
  'uninstall:Uninstall gems from the local repository'
  'unpack:Unpack an installed gem to the current directory'
40
  'update:Update installed gems to the latest version'
41
  'which:Find the location of a library file you can require'
42
  'yank:Remove a specific gem version release from RubyGems.org'
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
)

local expl
local -a gems installed_gems

_arguments \
  '(-v --version)'{-v,--version}'[show version]' \
  '(-h --help)'{-h,--help}'[show help]' \
  '*:: :->subcmds' && return 0

if (( CURRENT == 1 )); then
  _describe -t commands "gem subcommand" _1st_arguments
  return
fi

case "$words[1]" in
  list)
      if [[ "$state" == forms ]]; then
        _gem_installed
        _requested installed_gems expl 'installed gems' compadd -a installed_gems
      fi ;;
  uninstall|update)
    _gem_installed
    _wanted installed_gems expl 'installed gems' compadd -a installed_gems ;;
esac