commit
67b2781f62
38 changed files with 1000 additions and 120 deletions
@ -0,0 +1,36 @@ |
|||||||
|
function _cabal_commands() { |
||||||
|
local ret=1 state |
||||||
|
_arguments ':subcommand:->subcommand' && ret=0 |
||||||
|
|
||||||
|
case $state in |
||||||
|
subcommand) |
||||||
|
subcommands=( |
||||||
|
"bench:Run the benchmark, if any (configure with UserHooks)" |
||||||
|
"build:Make this package ready for installation" |
||||||
|
"check:Check the package for common mistakes" |
||||||
|
"clean:Clean up after a build" |
||||||
|
"copy:Copy teh files into the install locations" |
||||||
|
"configure:Prepare to build the package" |
||||||
|
"fetch:Downloads packages for later installation" |
||||||
|
"haddock:Generate HAddock HTML documentation" |
||||||
|
"help:Help about commands" |
||||||
|
"hscolour:Generate HsColour colourised code, in HTML format" |
||||||
|
"info:Display detailed information about a particular package" |
||||||
|
"init:Interactively create a .cabal file" |
||||||
|
"install:Installs a list of packages" |
||||||
|
"list:List packages matching a search string" |
||||||
|
"register:Register this package with the compiler" |
||||||
|
"report:Upload build reports to a remote server" |
||||||
|
"sdist:Generate a source distribution file (.tar.gz)" |
||||||
|
"test:Run the test suite, if any (configure with UserHooks)" |
||||||
|
"unpack:Unpacks packages for user inspection" |
||||||
|
"update:Updates list of known packages" |
||||||
|
"upload:Uploads source packages to Hackage" |
||||||
|
) |
||||||
|
_describe -t subcommands 'cabal subcommands' subcommands && ret=0 |
||||||
|
esac |
||||||
|
|
||||||
|
return ret |
||||||
|
} |
||||||
|
|
||||||
|
compdef _cabal_commands cabal |
||||||
@ -0,0 +1,129 @@ |
|||||||
|
#compdef celery |
||||||
|
#autoload |
||||||
|
|
||||||
|
#celery zsh completion |
||||||
|
|
||||||
|
_celery () { |
||||||
|
local -a _1st_arguments ifargs dopts controlargs |
||||||
|
|
||||||
|
typeset -A opt_args |
||||||
|
|
||||||
|
_1st_arguments=('worker' 'events' 'beat' 'shell' 'multi' 'amqp' 'status' 'inspect' \ |
||||||
|
'control' 'purge' 'list' 'migrate' 'call' 'result' 'report') |
||||||
|
ifargs=('--app=' '--broker=' '--loader=' '--config=' '--version') |
||||||
|
dopts=('--detach' '--umask=' '--gid=' '--uid=' '--pidfile=' '--logfile=' '--loglevel=') |
||||||
|
controlargs=('--timeout' '--destination') |
||||||
|
_arguments \ |
||||||
|
'(-A --app=)'{-A,--app}'[app instance to use (e.g. module.attr_name):APP]' \ |
||||||
|
'(-b --broker=)'{-b,--broker}'[url to broker. default is "amqp://guest@localhost//":BROKER]' \ |
||||||
|
'(--loader)--loader[name of custom loader class to use.:LOADER]' \ |
||||||
|
'(--config)--config[Name of the configuration module:CONFIG]' \ |
||||||
|
'(--workdir)--workdir[Optional directory to change to after detaching.:WORKING_DIRECTORY]' \ |
||||||
|
'(-q --quiet)'{-q,--quiet}'[Don"t show as much output.]' \ |
||||||
|
'(-C --no-color)'{-C,--no-color}'[Don"t display colors.]' \ |
||||||
|
'(--version)--version[show program"s version number and exit]' \ |
||||||
|
'(- : *)'{-h,--help}'[show this help message and exit]' \ |
||||||
|
'*:: :->subcmds' && return 0 |
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then |
||||||
|
_describe -t commands "celery subcommand" _1st_arguments |
||||||
|
return |
||||||
|
fi |
||||||
|
|
||||||
|
case "$words[1]" in |
||||||
|
worker) |
||||||
|
_arguments \ |
||||||
|
'(-C --concurrency=)'{-C,--concurrency=}'[Number of child processes processing the queue. The default is the number of CPUs.]' \ |
||||||
|
'(--pool)--pool=:::(processes eventlet gevent threads solo)' \ |
||||||
|
'(--purge --discard)'{--discard,--purge}'[Purges all waiting tasks before the daemon is started.]' \ |
||||||
|
'(-f --logfile=)'{-f,--logfile=}'[Path to log file. If no logfile is specified, stderr is used.]' \ |
||||||
|
'(--loglevel=)--loglevel=:::(critical error warning info debug)' \ |
||||||
|
'(-N --hostname=)'{-N,--hostname=}'[Set custom hostname, e.g. "foo.example.com".]' \ |
||||||
|
'(-B --beat)'{-B,--beat}'[Also run the celerybeat periodic task scheduler.]' \ |
||||||
|
'(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database if running with the -B option. Defaults to celerybeat-schedule.]' \ |
||||||
|
'(-S --statedb=)'{-S,--statedb=}'[Path to the state database.Default: None]' \ |
||||||
|
'(-E --events)'{-E,--events}'[Send events that can be captured by monitors like celeryev, celerymon, and others.]' \ |
||||||
|
'(--time-limit=)--time-limit=[nables a hard time limit (in seconds int/float) for tasks]' \ |
||||||
|
'(--soft-time-limit=)--soft-time-limit=[Enables a soft time limit (in seconds int/float) for tasks]' \ |
||||||
|
'(--maxtasksperchild=)--maxtasksperchild=[Maximum number of tasks a pool worker can execute before it"s terminated and replaced by a new worker.]' \ |
||||||
|
'(-Q --queues=)'{-Q,--queues=}'[List of queues to enable for this worker, separated by comma. By default all configured queues are enabled.]' \ |
||||||
|
'(-I --include=)'{-I,--include=}'[Comma separated list of additional modules to import.]' \ |
||||||
|
'(--pidfile=)--pidfile=[Optional file used to store the process pid.]' \ |
||||||
|
'(--autoscale=)--autoscale=[Enable autoscaling by providing max_concurrency, min_concurrency.]' \ |
||||||
|
'(--autoreload)--autoreload[Enable autoreloading.]' \ |
||||||
|
'(--no-execv)--no-execv[Don"t do execv after multiprocessing child fork.]' |
||||||
|
compadd -a ifargs |
||||||
|
;; |
||||||
|
inspect) |
||||||
|
_values -s \ |
||||||
|
'active[dump active tasks (being processed)]' \ |
||||||
|
'active_queues[dump queues being consumed from]' \ |
||||||
|
'ping[ping worker(s)]' \ |
||||||
|
'registered[dump of registered tasks]' \ |
||||||
|
'report[get bugreport info]' \ |
||||||
|
'reserved[dump reserved tasks (waiting to be processed)]' \ |
||||||
|
'revoked[dump of revoked task ids]' \ |
||||||
|
'scheduled[dump scheduled tasks (eta/countdown/retry)]' \ |
||||||
|
'stats[dump worker statistics]' |
||||||
|
compadd -a controlargs ifargs |
||||||
|
;; |
||||||
|
control) |
||||||
|
_values -s \ |
||||||
|
'add_consumer[tell worker(s) to start consuming a queue]' \ |
||||||
|
'autoscale[change autoscale settings]' \ |
||||||
|
'cancel_consumer[tell worker(s) to stop consuming a queue]' \ |
||||||
|
'disable_events[tell worker(s) to disable events]' \ |
||||||
|
'enable_events[tell worker(s) to enable events]' \ |
||||||
|
'pool_grow[start more pool processes]' \ |
||||||
|
'pool_shrink[use less pool processes]' \ |
||||||
|
'rate_limit[tell worker(s) to modify the rate limit for a task type]' \ |
||||||
|
'time_limit[tell worker(s) to modify the time limit for a task type.]' |
||||||
|
compadd -a controlargs ifargs |
||||||
|
;; |
||||||
|
multi) |
||||||
|
_values -s \ |
||||||
|
'--nosplash[Don"t display program info.]' \ |
||||||
|
'--verbose[Show more output.]' \ |
||||||
|
'--no-color[Don"t display colors.]' \ |
||||||
|
'--quiet[Don"t show as much output.]' \ |
||||||
|
'start' 'restart' 'stopwait' 'stop' 'show' \ |
||||||
|
'names' 'expand' 'get' 'kill' |
||||||
|
compadd -a ifargs |
||||||
|
;; |
||||||
|
amqp) |
||||||
|
_values -s \ |
||||||
|
'queue.declare' 'queue.purge' 'exchange.delete' 'basic.publish' \ |
||||||
|
'exchange.declare' 'queue.delete' 'queue.bind' 'basic.get' |
||||||
|
;; |
||||||
|
list) |
||||||
|
_values -s, 'bindings' |
||||||
|
;; |
||||||
|
shell) |
||||||
|
_values -s \ |
||||||
|
'--ipython[force iPython.]' \ |
||||||
|
'--bpython[force bpython.]' \ |
||||||
|
'--python[force default Python shell.]' \ |
||||||
|
'--without-tasks[don"t add tasks to locals.]' \ |
||||||
|
'--eventlet[use eventlet.]' \ |
||||||
|
'--gevent[use gevent.]' |
||||||
|
compadd -a ifargs |
||||||
|
;; |
||||||
|
beat) |
||||||
|
_arguments \ |
||||||
|
'(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database. Defaults to celerybeat-schedule.]' \ |
||||||
|
'(-S --scheduler=)'{-S,--scheduler=}'[Scheduler class to use. Default is celery.beat.PersistentScheduler.]' \ |
||||||
|
'(--max-interval)--max-interval[]' |
||||||
|
compadd -a dopts fargs |
||||||
|
;; |
||||||
|
events) |
||||||
|
_arguments \ |
||||||
|
'(-d --dump)'{-d,--dump}'[Dump events to stdout.]' \ |
||||||
|
'(-c --camera=)'{-c,--camera=}'[Take snapshots of events using this camera.]' \ |
||||||
|
'(-F --frequency=)'{-F,--frequency=}'[Camera: Shutter frequency. Default is every 1.0 seconds.]' \ |
||||||
|
'(-r --maxrate=)'{-r,--maxrate=}'[Camera: Optional shutter rate limit (e.g. 10/m).]' |
||||||
|
compadd -a dopts fargs |
||||||
|
;; |
||||||
|
*) |
||||||
|
;; |
||||||
|
esac |
||||||
|
} |
||||||
@ -0,0 +1,4 @@ |
|||||||
|
## git |
||||||
|
**Maintainer:** [Stibbons](https://github.com/Stibbons) |
||||||
|
|
||||||
|
This plugin adds several git aliases and increase the completion function provided by zsh |
||||||
@ -0,0 +1,62 @@ |
|||||||
|
#compdef git-branch |
||||||
|
|
||||||
|
_git-branch () |
||||||
|
{ |
||||||
|
declare l c m d |
||||||
|
|
||||||
|
l='--color --no-color -r -a --all -v --verbose --abbrev --no-abbrev' |
||||||
|
c='-l -f --force -t --track --no-track --set-upstream --contains --merged --no-merged' |
||||||
|
m='-m -M' |
||||||
|
d='-d -D' |
||||||
|
|
||||||
|
declare -a dependent_creation_args |
||||||
|
if (( words[(I)-r] == 0 )); then |
||||||
|
dependent_creation_args=( |
||||||
|
"($l $m $d): :__git_branch_names" |
||||||
|
"::start-point:__git_revisions") |
||||||
|
fi |
||||||
|
|
||||||
|
declare -a dependent_deletion_args |
||||||
|
if (( words[(I)-d] || words[(I)-D] )); then |
||||||
|
dependent_creation_args= |
||||||
|
dependent_deletion_args=( |
||||||
|
'-r[delete only remote-tracking branches]') |
||||||
|
if (( words[(I)-r] )); then |
||||||
|
dependent_deletion_args+='*: :__git_ignore_line_inside_arguments __git_remote_branch_names' |
||||||
|
else |
||||||
|
dependent_deletion_args+='*: :__git_ignore_line_inside_arguments __git_branch_names' |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
declare -a dependent_modification_args |
||||||
|
if (( words[(I)-m] || words[(I)-M] )); then |
||||||
|
dependent_creation_args= |
||||||
|
dependent_modification_args=( |
||||||
|
':old or new branch name:__git_branch_names' |
||||||
|
'::new branch name:__git_branch_names') |
||||||
|
fi |
||||||
|
|
||||||
|
_arguments -w -S -s \ |
||||||
|
"($c $m $d --no-color :)--color=-[turn on branch coloring]:: :__git_color_whens" \ |
||||||
|
"($c $m $d : --color)--no-color[turn off branch coloring]" \ |
||||||
|
"($c $m -a --all)-r[list or delete only remote-tracking branches]" \ |
||||||
|
"($c $m $d : -r)"{-a,--all}"[list both remote-tracking branches and local branches]" \ |
||||||
|
"($c $m $d : -v --verbose)"{-v,--verbose}'[show SHA1 and commit subject line for each head]' \ |
||||||
|
"($c $m $d :)--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length" \ |
||||||
|
"($c $m $d :)--no-abbrev[do not abbreviate sha1s]" \ |
||||||
|
"($l $m $d)-l[create the branch's reflog]" \ |
||||||
|
"($l $m $d -f --force)"{-f,--force}"[force the creation of a new branch]" \ |
||||||
|
"($l $m $d -t --track)"{-t,--track}"[set up configuration so that pull merges from the start point]" \ |
||||||
|
"($l $m $d)--no-track[override the branch.autosetupmerge configuration variable]" \ |
||||||
|
"($l $m $d)--set-upstream[set up configuration so that pull merges]" \ |
||||||
|
"($l $m $d)--contains=[only list branches which contain the specified commit]: :__git_committishs" \ |
||||||
|
"($l $m $d)--merged=[only list branches which are fully contained by HEAD]: :__git_committishs" \ |
||||||
|
"($l $m $d)--no-merged=[do not list branches which are fully contained by HEAD]: :__git_committishs" \ |
||||||
|
$dependent_creation_args \ |
||||||
|
"($l $c $d -M)-m[rename a branch and the corresponding reflog]" \ |
||||||
|
"($l $c $d -m)-M[rename a branch even if the new branch-name already exists]" \ |
||||||
|
$dependent_modification_args \ |
||||||
|
"($l $c $m -D)-d[delete a fully merged branch]" \ |
||||||
|
"($l $c $m -d)-D[delete a branch]" \ |
||||||
|
$dependent_deletion_args |
||||||
|
} |
||||||
@ -0,0 +1,74 @@ |
|||||||
|
#compdef git-remote |
||||||
|
|
||||||
|
# NOTE: --track is undocumented. |
||||||
|
# TODO: --track, -t, --master, and -m should take remote branches, I guess. |
||||||
|
# NOTE: --master is undocumented. |
||||||
|
# NOTE: --fetch is undocumented. |
||||||
|
_git-remote () { |
||||||
|
local curcontext=$curcontext state line |
||||||
|
declare -A opt_args |
||||||
|
|
||||||
|
_arguments -C \ |
||||||
|
':command:->command' \ |
||||||
|
'*::options:->options' && ret=0 |
||||||
|
|
||||||
|
case $state in |
||||||
|
(command) |
||||||
|
declare -a commands |
||||||
|
|
||||||
|
commands=( |
||||||
|
'add:add a new remote' |
||||||
|
'show:show information about a given remote' |
||||||
|
'prune:delete all stale tracking branches for a given remote' |
||||||
|
'update:fetch updates for a set of remotes' |
||||||
|
'rm:remove a remote from .git/config and all associated tracking branches' |
||||||
|
'rename:rename a remote from .git/config and update all associated tracking branches' |
||||||
|
'set-head:sets or deletes the default branch' |
||||||
|
'set-branches:changes the list of branches tracked by the named remote.' |
||||||
|
'set-url:changes URL remote points to.' |
||||||
|
) |
||||||
|
|
||||||
|
_describe -t commands 'sub-command' commands && ret=0 |
||||||
|
;; |
||||||
|
(options) |
||||||
|
case $line[1] in |
||||||
|
(add) |
||||||
|
_arguments \ |
||||||
|
'*'{--track,-t}'[track given branch instead of default glob refspec]:branch:__git_branch_names' \ |
||||||
|
'(--master -m)'{--master,-m}'[set the remote'\''s HEAD to point to given master branch]:branch:__git_branch_names' \ |
||||||
|
'(--fetch -f)'{--fetch,-f}'[run git-fetch on the new remote after it has been created]' \ |
||||||
|
':branch name:__git_remotes' \ |
||||||
|
':url:_urls' && ret=0 |
||||||
|
;; |
||||||
|
(show) |
||||||
|
_arguments \ |
||||||
|
'-n[do not contact the remote for a list of branches]' \ |
||||||
|
':remote:__git_remotes' && ret=0 |
||||||
|
;; |
||||||
|
(prune) |
||||||
|
_arguments \ |
||||||
|
'(--dry-run -n)'{-n,--dry-run}'[do not actually prune, only list what would be done]' \ |
||||||
|
':remote:__git_remotes' && ret=0 |
||||||
|
;; |
||||||
|
(update) |
||||||
|
__git_remote-groups && ret=0 |
||||||
|
;; |
||||||
|
(rm) |
||||||
|
__git_remotes && ret=0 |
||||||
|
;; |
||||||
|
(rename) |
||||||
|
__git_remotes && ret=0 |
||||||
|
;; |
||||||
|
(set-url) |
||||||
|
_arguments \ |
||||||
|
'*--push[manipulate push URLs]' \ |
||||||
|
'(--add)--add[add URL]' \ |
||||||
|
'(--delete)--delete[delete URLs]' \ |
||||||
|
':branch name:__git_remotes' \ |
||||||
|
':url:_urls' && ret=0 |
||||||
|
;; |
||||||
|
|
||||||
|
esac |
||||||
|
;; |
||||||
|
esac |
||||||
|
} |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
# Aliases to stop, start and restart Postgres |
||||||
|
# Paths noted below are for Postgress installed via Homebrew on OSX |
||||||
|
|
||||||
|
alias startpost='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start' |
||||||
|
alias stoppost='pg_ctl -D /usr/local/var/postgres stop -s -m fast' |
||||||
|
alias restartpost='stoppost && sleep 1 && startpost' |
||||||
@ -0,0 +1,56 @@ |
|||||||
|
#compdef rails |
||||||
|
#autoload |
||||||
|
|
||||||
|
# rails 3 zsh completion, based on homebrew completion |
||||||
|
# Extracted from https://github.com/robbyrussell/oh-my-zsh/blob/30620d463850c17f86e7a56fbf6a8b5e793a4e07/plugins/rails3/_rails3 |
||||||
|
# Published by Christopher Chow |
||||||
|
|
||||||
|
local -a _1st_arguments |
||||||
|
_1st_arguments=( |
||||||
|
'generate:Generate new code (short-cut alias: "g")' |
||||||
|
'console:Start the Rails console (short-cut alias: "c")' |
||||||
|
'server:Start the Rails server (short-cut alias: "s")' |
||||||
|
'dbconsole:Start a console for the database specified in config/database.yml (short-cut alias: "db")' |
||||||
|
'new:Create a new Rails application. "rails new my_app" creates a new application called MyApp in "./my_app"' |
||||||
|
'application:Generate the Rails application code' |
||||||
|
'destroy:Undo code generated with "generate"' |
||||||
|
'benchmarker:See how fast a piece of code runs' |
||||||
|
'profiler:Get profile information from a piece of code' |
||||||
|
'plugin:Install a plugin' |
||||||
|
) |
||||||
|
|
||||||
|
_rails_generate_arguments() { |
||||||
|
generate_arguments=( |
||||||
|
controller |
||||||
|
generator |
||||||
|
helper |
||||||
|
integration_test |
||||||
|
mailer |
||||||
|
migration |
||||||
|
model |
||||||
|
observer |
||||||
|
performance_test |
||||||
|
plugin |
||||||
|
resource |
||||||
|
scaffold |
||||||
|
scaffold_controller |
||||||
|
session_migration |
||||||
|
stylesheets |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
_arguments \ |
||||||
|
'(--version)--version[show version]' \ |
||||||
|
'(--help)--help[show help]' \ |
||||||
|
'*:: :->subcmds' && return 0 |
||||||
|
|
||||||
|
if (( CURRENT == 1 )); then |
||||||
|
_describe -t commands "rails subcommand" _1st_arguments |
||||||
|
return |
||||||
|
fi |
||||||
|
|
||||||
|
case "$words[1]" in |
||||||
|
generate) |
||||||
|
_rails_generate_arguments |
||||||
|
_wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;; |
||||||
|
esac |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
# Get a random quote fron the site http://www.quotationspage.com/random.php3 |
||||||
|
# Created by Eduardo San Martin Morote aka Posva |
||||||
|
# http://posva.github.io |
||||||
|
# Sun Jun 09 10:59:36 CEST 2013 |
||||||
|
# Don't remove this header, thank you |
||||||
|
# Usage: quote |
||||||
|
|
||||||
|
if [[ -x `which curl` ]]; then |
||||||
|
function quote() |
||||||
|
{ |
||||||
|
Q=$(curl -s --connect-timeout 2 "http://www.quotationspage.com/random.php3" | grep -m 1 "dt ") |
||||||
|
TXT=$(echo "$Q" | sed -e 's/<\/dt>.*//g' -e 's/.*html//g' -e 's/^[^a-zA-Z]*//' -e 's/<\/a..*$//g') |
||||||
|
W=$(echo "$Q" | sed -e 's/.*\/quotes\///g' -e 's/<.*//g' -e 's/.*">//g') |
||||||
|
echo "\e[0;33m${W}\e[0;30m: \e[0;35m“${TXT}”\e[m" |
||||||
|
} |
||||||
|
#quote |
||||||
|
fi |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
## repo |
||||||
|
**Maintainer:** [Stibbons](https://github.com/Stibbons) |
||||||
|
|
||||||
|
This plugin mainly add support automatic completion for the repo command line tool: |
||||||
|
http://code.google.com/p/git-repo/ |
||||||
|
|
||||||
|
* `r` aliases `repo` |
||||||
@ -0,0 +1,272 @@ |
|||||||
|
#compdef repo |
||||||
|
|
||||||
|
|
||||||
|
__git_apply_whitespace_strategies () |
||||||
|
{ |
||||||
|
declare -a strategies |
||||||
|
|
||||||
|
strategies=( |
||||||
|
'nowarn:turn off the trailing-whitespace warning' |
||||||
|
'warn:output trailing-whitespace warning, but apply patch' |
||||||
|
'fix:output trailing-whitespace warning and strip trailing whitespace' |
||||||
|
'error:output trailing-whitespace warning and refuse to apply patch' |
||||||
|
'error-all:same as "error", but output warnings for all files') |
||||||
|
|
||||||
|
_describe -t strategies 'trailing-whitespace resolution strategy' strategies $* |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
_repo() |
||||||
|
{ |
||||||
|
local context state state_descr line curcontext="$curcontext" |
||||||
|
typeset -A opt_args |
||||||
|
|
||||||
|
local ret=1 |
||||||
|
|
||||||
|
_arguments -C \ |
||||||
|
'(- 1 *)--help[show usage]'\ |
||||||
|
'1:command:->command'\ |
||||||
|
'*::args:->args' && ret=0 |
||||||
|
|
||||||
|
case $state in |
||||||
|
(command) |
||||||
|
repo list 2> /dev/null > /dev/null |
||||||
|
if [[ $? == 0 ]]; then |
||||||
|
local commands; |
||||||
|
commands=( |
||||||
|
'abandon:Permanently abandon a development branch' |
||||||
|
'branch:View current topic branches' |
||||||
|
'branches:View current topic branches' |
||||||
|
'checkout:Checkout a branch for development' |
||||||
|
'cherry-pick:Cherry-pick a change.' |
||||||
|
'diff:Show changes between commit and working tree' |
||||||
|
'download:Download and checkout a change' |
||||||
|
'forall:execute command on several project' |
||||||
|
'grep:Print lines matching a pattern' |
||||||
|
'help:Display detailed help on a command' |
||||||
|
'init:Initialize repo in the current directory' |
||||||
|
'list:List projects and their associated directories' |
||||||
|
'manifest:Manifest inspection utility' |
||||||
|
'overview:Display overview of unmerged project branches' |
||||||
|
'prune:Prune (delete) already merged topics' |
||||||
|
'rebase:Rebase local branches on upstream branch' |
||||||
|
'selfupdate:Update repo to the latest version' |
||||||
|
'smartsync:Update working tree to the latest known good revision' |
||||||
|
'stage:Stage file(s) for commit' |
||||||
|
'start:Start a new branch for development' |
||||||
|
'status:Show the working tree status' |
||||||
|
'sync:Update working tree to the latest revision' |
||||||
|
'upload:Upload changes for code review' |
||||||
|
'version:Display the version of repo' |
||||||
|
) |
||||||
|
_describe -t commands 'command' commands && ret=0 |
||||||
|
else |
||||||
|
local commands; |
||||||
|
commands=( |
||||||
|
'init:Install repo in the current working directory' |
||||||
|
'help:Display detailed help on a command' |
||||||
|
) |
||||||
|
_describe -t commands 'command' commands && ret=0 |
||||||
|
fi |
||||||
|
;; |
||||||
|
(args) |
||||||
|
case $words[1] in |
||||||
|
(branch | branches) |
||||||
|
# TODO : list available projects and add them in list to feed compadd with |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
': :__repo_projects' \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(abandon) |
||||||
|
# TODO : list available projects and add them in list to feed compadd with |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
':branch name:__repo_branch' \ |
||||||
|
': :__repo_projects'\ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(checkout) |
||||||
|
# TODO : list available projects and add them in list to feed compadd with |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
':branch name:__repo_branch' \ |
||||||
|
': :__repo_projects'\ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(init) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
"(-q --quiet)"{-q,--quiet}"[be quiet]" \ |
||||||
|
"(-u --manifest-url)"{-u,--manifest-url=}"[manifest repository location]":url:__repo_url_prompt \ |
||||||
|
"(-b --manifest-branch)"{-b,--manifest-branch=}"[manifest branch or revision]":branch:__repo_branch\ |
||||||
|
"(-m --manifest-name)"{-m,--manifest-name=}"[initial manifest file]":manifest_name:__repo_manifest_name\ |
||||||
|
"(--mirror)--mirror[mirror the forrest]"\ |
||||||
|
"(--reference)--reference=[location of mirror directory]":dir:_dirs\ |
||||||
|
"(--depth)--depth=[create a shallow clone with given depth; see git clone]":depth:__repo_depth_prompt\ |
||||||
|
"(-g --group=)"{-g,--group=}"[restrict manifest projects to ones with a specified group]":group:_group\ |
||||||
|
"(-p --platform=)"{-p,--platform=}"[restrict manifest projects to ones with a specified platform group(auto|all|none|linux|darwin|...)]":platform:"(auto all none linux darwin)"\ |
||||||
|
"(--repo-url)--repo-url=[repo repository location]":url:__repo_url_prompt\ |
||||||
|
"(--repo-branch)--repo-branch[repo branch or revision]":branch_or_rev:__repo__repo_branch_or_rev\ |
||||||
|
"(--no-repo-verify)--no-repo-verify[do not verify repo source code]"\ |
||||||
|
"(--config-name)--config-name[Always prompt for name/e-mail]"\ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(start) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
"(--all)--all=[begin branch in all projects]"\ |
||||||
|
':branch name:__repo_new__repo_branch_name' \ |
||||||
|
':projects:__repo_projects_or_all' \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(rebase) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
"(-i --interactive)"{-i,--interactive}"[interactive rebase (single project only)]: :__repo_projects" \ |
||||||
|
"(-f --force-rebase)"{-f,--force-rebase}"[Pass --force-rebase to git rebase]" \ |
||||||
|
"(--no-ff)--no-ff=[Pass --no-ff to git rebase]"\ |
||||||
|
"(-q --quiet)"{-q,--quiet}"[Pass --quiet to git rebase]" \ |
||||||
|
"(--autosquash)--no-ff[Pass --autosquash to git rebase]"\ |
||||||
|
"(--whitespace=)--whitespace=[Pass --whitespace to git rebase]: :__git_apply_whitespace_strategies"\ |
||||||
|
"(--auto-stash)--auto-stash[Stash local modifications before starting]"\ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(checkout) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
':branch name:__git_branch_names' \ |
||||||
|
':projects:__repo_projects' \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(list) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(status) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
"(-j --jobs)"{-j,--jobs}"[number of projects to check simultaneously]" \ |
||||||
|
':projects:__repo_projects' \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(sync) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
"(--no-force-broken)--no-force-broken[stop sync if a project fails to sync (probably because of permissions)]" \ |
||||||
|
"(-l --local-only)"{-l,--local-only}"[only update working tree, don't fetch]" \ |
||||||
|
"(-n --network-only)"{-n,--network-branch}"[fetch only, don't update working tree]" \ |
||||||
|
"(-d --detach)"{-d,--detach}"[detach projects back to manifest revision]" \ |
||||||
|
"(-c --current-branch)"{-c,--current-branch}"[fetch only current branch from server]" \ |
||||||
|
"(-q --quiet)"{-q,--quiet}"[be more quiet]" \ |
||||||
|
"(-j --jobs=)"{-j,--jobs=}"[projects to fetch simultaneously (default 1) (limited to 5)]:projects to fetch simultaneously (default 1) (limited to 5)" \ |
||||||
|
"(-m --manifest-name=)"{-m,--manifest-name=}"[temporary manifest to use for this sync]:manifest xml file:_files -g *.xml" \ |
||||||
|
"(--no-clone-bundle)--no-clone-bundle[disable use of /clone.bundle on HTTP/HTTPS]" \ |
||||||
|
"(-s --smart-sync)"{-s,--smart-sync=}"[smart sync using manifest from a known tag]:tag:" \ |
||||||
|
'(--no-repo-verify)--no-repo-verify[do not verify repo source code]' \ |
||||||
|
': :__repo_projects' \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(upload) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
"(-t)-t[Send local branch name to Gerrit Code Review]" \ |
||||||
|
"(--re= --reviewers=)"{--re=,--reviewers=}"[Request reviews from these people]:Request reviews from these people:" \ |
||||||
|
"(--cc=)--cc=[Also send email to these email addresses.]:email addresses:_email_addresses" \ |
||||||
|
"(--br=)--br=[Branch to upload.]:branch:__repo_branch" \ |
||||||
|
"(--cbr --current-branch)"{--cbr,--current-branch}"[Upload current git branch]" \ |
||||||
|
"(-d --draft)"{-d,--draft}"[If specified, upload as a draft.]" \ |
||||||
|
"(--verify --no-verify)--no-verify[Do not run the upload hook.]" \ |
||||||
|
'(--verify --no-verify)--verify[Run the upload hook without prompting]' \ |
||||||
|
': :__repo_projects' \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
(forall) |
||||||
|
_arguments : \ |
||||||
|
"(-h --help)"{-h,--help}"[Show help]" \ |
||||||
|
"(-v --verbose)"{-v,--verbose}"[Show command error messages]" \ |
||||||
|
'(-p)-p[Show project headers before output]' \ |
||||||
|
': :__repo_projects_mandatory' \ |
||||||
|
"(-c --command -h --help -v --verbose -p)"{-c,--command}"[Command (and arguments) to execute]" \ |
||||||
|
&& ret=0 |
||||||
|
;; |
||||||
|
*) |
||||||
|
ret=0 |
||||||
|
esac |
||||||
|
;; |
||||||
|
esac |
||||||
|
|
||||||
|
return $ret |
||||||
|
} |
||||||
|
|
||||||
|
__repo_reviewers() |
||||||
|
{ |
||||||
|
# _message -e url 'reviewers' |
||||||
|
} |
||||||
|
|
||||||
|
__repo_url_prompt() |
||||||
|
{ |
||||||
|
_message -e url 'url' |
||||||
|
} |
||||||
|
|
||||||
|
__repo_manifest_name() |
||||||
|
{ |
||||||
|
_message -e manifest_name 'manifest name' |
||||||
|
} |
||||||
|
|
||||||
|
_group() |
||||||
|
{ |
||||||
|
_message -e group 'group' |
||||||
|
} |
||||||
|
|
||||||
|
__repo_branch() |
||||||
|
{ |
||||||
|
#_message -e branch 'Repo branch' |
||||||
|
branches=($(repo branches| cut -c4- | grep '|' | cut -d' ' -f1)) |
||||||
|
_describe -t branches 'Select repo branch' branches |
||||||
|
} |
||||||
|
|
||||||
|
__repo__repo_branch_or_rev() |
||||||
|
{ |
||||||
|
_message -e branch_or_rev 'repo branch or revision' |
||||||
|
} |
||||||
|
|
||||||
|
__repo_depth_prompt() |
||||||
|
{ |
||||||
|
_message -e depth 'depth' |
||||||
|
} |
||||||
|
|
||||||
|
__repo_projects() |
||||||
|
{ |
||||||
|
_message -e depth 'Optional option : <projects>...' |
||||||
|
projects=($(repo list | cut -d' ' -f1)) |
||||||
|
_describe -t projects 'Select projects (keep empty for selecting all projects)' projects |
||||||
|
} |
||||||
|
|
||||||
|
__repo_projects_mandatory() |
||||||
|
{ |
||||||
|
projects=($(repo list | cut -d' ' -f1)) |
||||||
|
#_describe -t projects 'Select projects to apply commands' projects |
||||||
|
_values -s ' ' "Select projects to apply commands" $projects |
||||||
|
} |
||||||
|
|
||||||
|
__repo_new__repo_branch_name() |
||||||
|
{ |
||||||
|
branches=($(repo branches| cut -c4- | grep '|' | cut -d' ' -f1)) |
||||||
|
_describe "" branches |
||||||
|
_message -e "branch name" 'Enter new branch name or select an existing repo branch' |
||||||
|
} |
||||||
|
|
||||||
|
__repo_projects_or_all() |
||||||
|
{ |
||||||
|
#_message -e depth '[--all | <project>...]' |
||||||
|
|
||||||
|
projects=(--all $(repo list | cut -d' ' -f1)) |
||||||
|
_describe -t projects 'Select projects or --all' projects |
||||||
|
_describe -t --all 'All projects' |
||||||
|
} |
||||||
|
|
||||||
|
_repo "$@" |
||||||
|
return $? |
||||||
|
|
||||||
@ -0,0 +1,2 @@ |
|||||||
|
# Aliases |
||||||
|
alias r='repo' |
||||||
@ -1,9 +1,8 @@ |
|||||||
function virtualenv_prompt_info(){ |
function virtualenv_prompt_info(){ |
||||||
local virtualenv_path="$VIRTUAL_ENV" |
if [[ -n $VIRTUAL_ENV ]]; then |
||||||
if [[ -n $virtualenv_path ]]; then |
printf "%s[%s] " "%{${fg[yellow]}%}" ${${VIRTUAL_ENV}:t} |
||||||
local virtualenv_name=`basename $virtualenv_path` |
|
||||||
printf "%s[%s] " "%{${fg[yellow]}%}" $virtualenv_name |
|
||||||
fi |
fi |
||||||
} |
} |
||||||
|
|
||||||
|
# disables prompt mangling in virtual_env/bin/activate |
||||||
export VIRTUAL_ENV_DISABLE_PROMPT=1 |
export VIRTUAL_ENV_DISABLE_PROMPT=1 |
||||||
|
|||||||
@ -1,40 +1,55 @@ |
|||||||
wrapsource=`which virtualenvwrapper_lazy.sh` |
virtualenvwrapper='virtualenvwrapper_lazy.sh' |
||||||
|
if (( $+commands[$virtualenvwrapper] )); then |
||||||
if [[ -f "$wrapsource" ]]; then |
source ${${virtualenvwrapper}:c} |
||||||
source $wrapsource |
|
||||||
|
|
||||||
if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then |
if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then |
||||||
# Automatically activate Git projects' virtual environments based on the |
# Automatically activate Git projects's virtual environments based on the |
||||||
# directory name of the project. Virtual environment name can be overridden |
# directory name of the project. Virtual environment name can be overridden |
||||||
# by placing a .venv file in the project root with a virtualenv name in it |
# by placing a .venv file in the project root with a virtualenv name in it |
||||||
function workon_cwd { |
function workon_cwd { |
||||||
# Check that this is a Git repo |
if [ ! $WORKON_CWD ]; then |
||||||
PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null` |
WORKON_CWD=1 |
||||||
if (( $? == 0 )); then |
# Check if this is a Git repo |
||||||
|
PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null` |
||||||
|
if (( $? != 0 )); then |
||||||
|
PROJECT_ROOT="." |
||||||
|
fi |
||||||
# Check for virtualenv name override |
# Check for virtualenv name override |
||||||
ENV_NAME=`basename "$PROJECT_ROOT"` |
|
||||||
if [[ -f "$PROJECT_ROOT/.venv" ]]; then |
if [[ -f "$PROJECT_ROOT/.venv" ]]; then |
||||||
ENV_NAME=`cat "$PROJECT_ROOT/.venv"` |
ENV_NAME=`cat "$PROJECT_ROOT/.venv"` |
||||||
|
elif [[ "$PROJECT_ROOT" != "." ]]; then |
||||||
|
ENV_NAME=`basename "$PROJECT_ROOT"` |
||||||
|
else |
||||||
|
ENV_NAME="" |
||||||
fi |
fi |
||||||
# Activate the environment only if it is not already active |
if [[ "$ENV_NAME" != "" ]]; then |
||||||
if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then |
# Activate the environment only if it is not already active |
||||||
if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then |
if [[ "$VIRTUAL_ENV" != "$WORKON_HOME/$ENV_NAME" ]]; then |
||||||
workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME" |
if [[ -e "$WORKON_HOME/$ENV_NAME/bin/activate" ]]; then |
||||||
|
workon "$ENV_NAME" && export CD_VIRTUAL_ENV="$ENV_NAME" |
||||||
|
fi |
||||||
fi |
fi |
||||||
|
elif [ $CD_VIRTUAL_ENV ]; then |
||||||
|
# We've just left the repo, deactivate the environment |
||||||
|
# Note: this only happens if the virtualenv was activated automatically |
||||||
|
deactivate && unset CD_VIRTUAL_ENV |
||||||
fi |
fi |
||||||
elif [ $CD_VIRTUAL_ENV ]; then |
unset PROJECT_ROOT |
||||||
# We've just left the repo, deactivate the environment |
unset WORKON_CWD |
||||||
# Note: this only happens if the virtualenv was activated automatically |
|
||||||
deactivate && unset CD_VIRTUAL_ENV |
|
||||||
fi |
fi |
||||||
unset PROJECT_ROOT |
|
||||||
} |
} |
||||||
|
|
||||||
# New cd function that does the virtualenv magic |
# Append workon_cwd to the chpwd_functions array, so it will be called on cd |
||||||
function cd { |
# http://zsh.sourceforge.net/Doc/Release/Functions.html |
||||||
builtin cd "$@" && workon_cwd |
# TODO: replace with 'add-zsh-hook chpwd workon_cwd' when oh-my-zsh min version is raised above 4.3.4 |
||||||
} |
if (( ${+chpwd_functions} )); then |
||||||
|
if (( $chpwd_functions[(I)workon_cwd] == 0 )); then |
||||||
|
set -A chpwd_functions $chpwd_functions workon_cwd |
||||||
|
fi |
||||||
|
else |
||||||
|
set -A chpwd_functions workon_cwd |
||||||
|
fi |
||||||
fi |
fi |
||||||
else |
else |
||||||
print "zsh virtualenvwrapper plugin: Cannot find virtualenvwrapper_lazy.sh. Please install with \`pip install virtualenvwrapper\`." |
print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}. Please install with \`pip install virtualenvwrapper\`." |
||||||
fi |
fi |
||||||
|
|||||||
@ -0,0 +1,43 @@ |
|||||||
|
# web_search from terminal |
||||||
|
|
||||||
|
function web_search() { |
||||||
|
|
||||||
|
# get the open command |
||||||
|
local open_cmd |
||||||
|
if [[ $(uname -s) == 'Darwin' ]]; then |
||||||
|
open_cmd='open' |
||||||
|
else |
||||||
|
open_cmd='xdg-open' |
||||||
|
fi |
||||||
|
|
||||||
|
# check whether the search engine is supported |
||||||
|
if [[ ! $1 =~ '(google|bing|yahoo)' ]]; |
||||||
|
then |
||||||
|
echo "Search engine $1 not supported." |
||||||
|
return 1 |
||||||
|
fi |
||||||
|
|
||||||
|
local url="http://www.$1.com" |
||||||
|
|
||||||
|
# no keyword provided, simply open the search engine homepage |
||||||
|
if [[ $# -le 1 ]]; then |
||||||
|
$open_cmd "$url" |
||||||
|
return |
||||||
|
fi |
||||||
|
|
||||||
|
url="${url}/search?q=" |
||||||
|
shift # shift out $1 |
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do |
||||||
|
url="${url}$1+" |
||||||
|
shift |
||||||
|
done |
||||||
|
|
||||||
|
url="${url%?}" # remove the last '+' |
||||||
|
|
||||||
|
$open_cmd "$url" |
||||||
|
} |
||||||
|
|
||||||
|
alias bing='web_search bing' |
||||||
|
alias google='web_search google' |
||||||
|
alias yahoo='web_search yahoo' |
||||||
Loading…
Reference in new issue