1
0
Fork 0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-12-21 03:41:57 +00:00

Merge pull request #2923 from Kriechi/bundler-fixes

Bundler fixes
This commit is contained in:
Robby Russell 2014-07-16 00:05:19 -07:00
commit 15c5d59892
3 changed files with 101 additions and 6 deletions

49
plugins/bundler/README.md Normal file
View file

@ -0,0 +1,49 @@
# Bundler
- adds completion for basic bundler commands
- adds short aliases for common bundler commands
- `be` aliased to `bundle exec`
- `bl` aliased to `bundle list`
- `bp` aliased to `bundle package`
- `bo` aliased to `bundle open`
- `bu` aliased to `bundle update`
- `bi` aliased to `bundle install --jobs=<cpu core count>` (only for bundler `>= 1.4.0`)
- adds a wrapper for common gems:
- looks for a binstub under `./bin/` and executes it (if present)
- calls `bundle exec <gem executable>` otherwise
For a full list of *common gems* being wrapped by default please look at the `bundler.plugin.zsh` file.
## Configuration
Please use the exact name of the executable and not the gem name.
### Add additional gems to be wrapped
Add this before the plugin-list in your `.zshrc`:
```sh
BUNDLED_COMMANDS=(rubocop)
plugins=(... bundler ...)
```
This will add the wrapper for the `rubocop` gem (i.e. the executable).
### Exclude gems from being wrapped
Add this before the plugin-list in your `.zshrc`:
```sh
UNBUNDLED_COMMANDS=(foreman spin)
plugins=(... bundler ...)
```
This will exclude the `foreman` and `spin` gems (i.e. their executable) from being wrapped.
## Excluded gems
These gems should not be called with `bundle exec`. Please see the Issues on GitHub for clarification.
`berks`
`foreman`
`mailcatcher`
`rails`
`ruby`
`spin`

View file

@ -18,11 +18,13 @@ case $state in
"check[Determine whether the requirements for your application are installed]" \ "check[Determine whether the requirements for your application are installed]" \
"list[Show all of the gems in the current bundle]" \ "list[Show all of the gems in the current bundle]" \
"show[Show the source location of a particular gem in the bundle]" \ "show[Show the source location of a particular gem in the bundle]" \
"outdated[Show all of the outdated gems in the current bundle]" \
"console[Start an IRB session in the context of the current bundle]" \ "console[Start an IRB session in the context of the current bundle]" \
"open[Open an installed gem in the editor]" \ "open[Open an installed gem in the editor]" \
"viz[Generate a visual representation of your dependencies]" \ "viz[Generate a visual representation of your dependencies]" \
"init[Generate a simple Gemfile, placed in the current directory]" \ "init[Generate a simple Gemfile, placed in the current directory]" \
"gem[Create a simple gem, suitable for development with bundler]" \ "gem[Create a simple gem, suitable for development with bundler]" \
"platform[Displays platform compatibility information]" \
"clean[Cleans up unused gems in your bundler directory]" \ "clean[Cleans up unused gems in your bundler directory]" \
"help[Describe available tasks or one specific task]" "help[Describe available tasks or one specific task]"
ret=0 ret=0
@ -39,11 +41,13 @@ case $state in
'check' \ 'check' \
'list' \ 'list' \
'show' \ 'show' \
'outdated' \
'console' \ 'console' \
'open' \ 'open' \
'viz' \ 'viz' \
'init' \ 'init' \
'gem' \ 'gem' \
'platform' \
'help' && ret=0 'help' && ret=0
;; ;;
install) install)
@ -71,6 +75,15 @@ case $state in
'(--verbose)--verbose[Enable verbose output mode]' '(--verbose)--verbose[Enable verbose output mode]'
ret=0 ret=0
;; ;;
outdated)
_arguments \
'(--pre)--pre[Check for newer pre-release gems]' \
'(--source)--source[Check against a specific source]' \
'(--local)--local[Do not attempt to fetch gems remotely and use the gem cache instead]' \
'(--no-color)--no-color[Disable colorization in output]' \
'(--verbose)--verbose[Enable verbose output mode]'
ret=0
;;
(open|show) (open|show)
_gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') ) _gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') )
if [[ $_gems != "" ]]; then if [[ $_gems != "" ]]; then

View file

@ -5,15 +5,49 @@ alias bo="bundle open"
alias bu="bundle update" alias bu="bundle update"
alias bi="bundle_install" alias bi="bundle_install"
# The following is based on https://github.com/gma/bundler-exec bundled_commands=(
annotate
bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard irb jekyll kitchen knife middleman nanoc puma rackup rainbows rake rspec ruby shotgun spec spin spork spring strainer tailor taps thin thor unicorn unicorn_rails) cap
capify
cucumber
foodcritic
guard
irb
jekyll
kitchen
knife
middleman
nanoc
pry
puma
rackup
rainbows
rake
rspec
shotgun
sidekiq
spec
spork
spring
strainer
tailor
taps
thin
thor
unicorn
unicorn_rails
)
# Remove $UNBUNDLED_COMMANDS from the bundled_commands list # Remove $UNBUNDLED_COMMANDS from the bundled_commands list
for cmd in $UNBUNDLED_COMMANDS; do for cmd in $UNBUNDLED_COMMANDS; do
bundled_commands=(${bundled_commands#$cmd}); bundled_commands=(${bundled_commands#$cmd});
done done
# Add $BUNDLED_COMMANDS to the bundled_commands list
for cmd in $BUNDLED_COMMANDS; do
bundled_commands+=($cmd);
done
## Functions ## Functions
bundle_install() { bundle_install() {
@ -55,7 +89,7 @@ _binstubbed() {
_run-with-bundler() { _run-with-bundler() {
if _bundler-installed && _within-bundled-project; then if _bundler-installed && _within-bundled-project; then
if _binstubbed $1; then if _binstubbed $1; then
bundle exec "./bin/$@" ./bin/$@
else else
bundle exec $@ bundle exec $@
fi fi
@ -74,4 +108,3 @@ for cmd in $bundled_commands; do
compdef _$cmd bundled_$cmd=$cmd compdef _$cmd bundled_$cmd=$cmd
fi fi
done done