summaryrefslogtreecommitdiff
path: root/plugins/pod
diff options
context:
space:
mode:
authorAlexandre Joly <alexandre.joly@futurecom.ch>2013-07-05 11:07:29 +0200
committerAlexandre Joly <alexandre.joly@futurecom.ch>2013-07-05 11:07:29 +0200
commitcf5ca2f4f3e6d98a4d4d4938be0e421645722fb2 (patch)
tree648de8d62929fe0734657c71d87560c08f0591f9 /plugins/pod
parentc26facb582eed3b63642665864258862aa49392b (diff)
downloadzsh-cf5ca2f4f3e6d98a4d4d4938be0e421645722fb2.tar.gz
zsh-cf5ca2f4f3e6d98a4d4d4938be0e421645722fb2.tar.bz2
zsh-cf5ca2f4f3e6d98a4d4d4938be0e421645722fb2.zip
commands and subcommands
Diffstat (limited to 'plugins/pod')
-rw-r--r--plugins/pod/_pod223
1 files changed, 170 insertions, 53 deletions
diff --git a/plugins/pod/_pod b/plugins/pod/_pod
index 2c183635d..ce8882d42 100644
--- a/plugins/pod/_pod
+++ b/plugins/pod/_pod
@@ -1,16 +1,29 @@
#compdef pod
+#autoload
# -----------------------------------------------------------------------------
# FILE: pod.plugin.zsh
# DESCRIPTION: Cocoapods autocomplete plugin for Oh-My-Zsh
+# http://cocoapods.org
# AUTHOR: Alexandre Joly (alexandre.joly@mekanics.ch)
# GITHUB: https://github.com/mekanics
+# TWITTER: @jolyAlexandre
# VERSION: 0.0.1
+# LICENSE: MIT
# -----------------------------------------------------------------------------
-_pod_all_repos() {
- repos=(`ls ~/.cocoapods`)
-}
+#------------------
+# TODO:
+# - Parameters for
+# - install
+# - update
+# - outdated
+# - search
+# - list
+# - push
+# - podfile-info
+# - setup
+#------------------
local -a _1st_arguments
_1st_arguments=(
@@ -29,54 +42,158 @@ _1st_arguments=(
'update:Update outdated project dependencies'
)
-_arguments '*:: :->command'
-
-if (( CURRENT == 1 )); then
- _describe -t commands "pod command" _1st_arguments
- return
-fi
-
-local -a _command_args
-case "$words[1]" in
- install)
- _command_args=(
- '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn` intact after downloading]' \
- '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
- '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
- )
- ;;
- update)
- _command_args=(
- '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn intact after downloading]' \
- '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
- '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
- )
- ;;
- outdated)
- _command_args=(
- '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
- )
- ;;
- search)
- _command_args=(
- '(--full)--full[Search by name, summary, and description]' \
- '(--stats)--stats[Show additional stats (like GitHub watchers and forks)]' \
- '(--ios)--ios[Restricts the search to Pods supported on iOS]' \
- '(--osx)--osx[Restricts the search to Pods supported on OS X]'
- )
- ;;
- update)
- _command_args=(
- '(--update)--update[Run `pod repo update before listing]'
- )
- ;;
-esac
+local -a _repo_arguments
+_repo_arguments=(
+ 'add:Add a spec repo'
+ 'lint:Validates all specs in a repo'
+ 'update:Update a spec repo'
+)
+
+local -a _spec_arguments
+_spec_arguments=(
+ 'cat:Prints a spec file'
+ 'create:Create spec file stub'
+ 'edit:Edit a spec file'
+ 'lint:Validates a spec file'
+ 'which:Prints the path of the given spec'
+)
+
+local -a _ipc_arguments
+_ipc_arguments=(
+ 'list:Lists the specifications know to CocoaPods'
+ 'podfile:Converts a Podfile to YAML'
+ 'repl:The repl listens to commands on standard input'
+ 'spec:Converts a podspec to YAML'
+ 'update-search-index:Updates the search index'
+)
+
+local -a _list_arguments
+_list_arguments=(
+ 'new:Lists pods introduced in the master spec-repo since the last check'
+)
+
+__first_command_list ()
+{
+ local expl
+ declare -a tasks
+
+ tasks=(install ipc lib list outdated podfile-info push repo search setup spec update)
+
+ _wanted tasks expl 'help' compadd $tasks
+}
+
+__repo_list() {
+ _wanted application expl 'command' compadd $(command ls -1 ~/.cocoapods 2>/dev/null | sed -e 's/ /\\ /g')
+}
+
+__pod-repo() {
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+ _describe -t commands "gem subcommand" _repo_arguments
+ return
+ ;;
+
+ (options)
+ case $line[1] in
+ (update|lint)
+ _arguments ':feature:__repo_list'
+ ;;
+ esac
+ ;;
+ esac
+}
+
+__pod-spec() {
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
-_arguments \
- $_command_args \
- '(--silent)--silent[Show nothing]' \
- '(--version)--version[Show the version of CocoaPods]' \
- '(--no-color)--no-color[Show output without color]' \
- '(--verbose)--verbose[Show more debugging information]' \
- '(--help)--help[Show help banner of specified command]' \
- && return 0 \ No newline at end of file
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+ _describe -t commands "gem subcommand" _spec_arguments
+ return
+ ;;
+
+ (options)
+ #todo
+ return
+ ;;
+ esac
+}
+
+__pod-ipc() {
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+ _describe -t commands "gem subcommand" _ipc_arguments
+ return
+ ;;
+
+ (options)
+ #todo
+ return
+ ;;
+ esac
+}
+
+
+
+local expl
+#local -a boxes installed_boxes
+
+local curcontext="$curcontext" state line
+typeset -A opt_args
+
+_arguments -C \
+ ':command:->command' \
+ '*::options:->options'
+
+case $state in
+ (command)
+ _describe -t commands "gem subcommand" _1st_arguments
+ return
+ ;;
+
+ (options)
+ case $line[1] in
+ (help)
+ _arguments ':feature:__first_command_list'
+ ;;
+
+ (repo)
+ __pod-repo
+ ;;
+
+ (spec)
+ __pod-spec
+ ;;
+
+ (ipc)
+ __pod-ipc
+ ;;
+
+ (list)
+ __pod-list
+ ;;
+
+ (install|lib|outdated|podfile-info|push|search|setup|update)
+ #_arguments ':feature:__repo_list'
+ esac
+ ;;
+esac