diff options
author | Marvin Borner | 2019-03-05 01:09:01 +0100 |
---|---|---|
committer | Marvin Borner | 2019-03-05 01:09:01 +0100 |
commit | 55457187d18221e76bd12f0fb2cfab65c49b92fb (patch) | |
tree | 8db042d2d80710d54100c2709ad4332153ac848a /.oh-my-zsh/plugins/bundler/bundler.plugin.zsh |
Initial commit
Diffstat (limited to '.oh-my-zsh/plugins/bundler/bundler.plugin.zsh')
-rw-r--r-- | .oh-my-zsh/plugins/bundler/bundler.plugin.zsh | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/.oh-my-zsh/plugins/bundler/bundler.plugin.zsh b/.oh-my-zsh/plugins/bundler/bundler.plugin.zsh new file mode 100644 index 0000000..668e15d --- /dev/null +++ b/.oh-my-zsh/plugins/bundler/bundler.plugin.zsh @@ -0,0 +1,115 @@ +alias be="bundle exec" +alias bl="bundle list" +alias bp="bundle package" +alias bo="bundle open" +alias bout="bundle outdated" +alias bu="bundle update" +alias bi="bundle_install" +alias bcn="bundle clean" + +bundled_commands=( + annotate + cap + capify + cucumber + foodcritic + guard + hanami + 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 +for cmd in $UNBUNDLED_COMMANDS; do + bundled_commands=(${bundled_commands#$cmd}); +done + +# Add $BUNDLED_COMMANDS to the bundled_commands list +for cmd in $BUNDLED_COMMANDS; do + bundled_commands+=($cmd); +done + +## Functions + +bundle_install() { + if ! _bundler-installed; then + echo "Bundler is not installed" + elif ! _within-bundled-project; then + echo "Can't 'bundle install' outside a bundled project" + else + local bundler_version=`bundle version | cut -d' ' -f3` + if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then + if [[ "$OSTYPE" = (darwin|freebsd)* ]] + then + local cores_num="$(sysctl -n hw.ncpu)" + else + local cores_num="$(nproc)" + fi + bundle install --jobs=$cores_num $@ + else + bundle install $@ + fi + fi +} + +_bundler-installed() { + which bundle > /dev/null 2>&1 +} + +_within-bundled-project() { + local check_dir="$PWD" + while [ "$check_dir" != "/" ]; do + [ -f "$check_dir/Gemfile" ] && return + check_dir="$(dirname $check_dir)" + done + false +} + +_binstubbed() { + [ -f "./bin/${1}" ] +} + +_run-with-bundler() { + if _bundler-installed && _within-bundled-project; then + if _binstubbed $1; then + ./bin/$@ + else + bundle exec $@ + fi + else + $@ + fi +} + +## Main program +for cmd in $bundled_commands; do + eval "function unbundled_$cmd () { $cmd \$@ }" + eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}" + alias $cmd=bundled_$cmd + + if which _$cmd > /dev/null 2>&1; then + compdef _$cmd bundled_$cmd=$cmd + fi +done |