diff options
Diffstat (limited to 'plugins/bundler/bundler.plugin.zsh')
| -rw-r--r-- | plugins/bundler/bundler.plugin.zsh | 86 | 
1 files changed, 72 insertions, 14 deletions
diff --git a/plugins/bundler/bundler.plugin.zsh b/plugins/bundler/bundler.plugin.zsh index 5bd28cbdc..ba3d3f623 100644 --- a/plugins/bundler/bundler.plugin.zsh +++ b/plugins/bundler/bundler.plugin.zsh @@ -3,37 +3,96 @@ alias bl="bundle list"  alias bp="bundle package"  alias bo="bundle open"  alias bu="bundle update" +alias bi="bundle_install" -if [[ "$(uname)" == 'Darwin' ]] -then -  local cores_num="$(sysctl hw.ncpu | awk '{print $2}')" -else -  local cores_num="$(nproc)" -fi -eval "alias bi='bundle install --jobs=$cores_num'" +bundled_commands=( +  annotate +  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 +) -# The following is based on https://github.com/gma/bundler-exec +# Remove $UNBUNDLED_COMMANDS from the bundled_commands list +for cmd in $UNBUNDLED_COMMANDS; do +  bundled_commands=(${bundled_commands#$cmd}); +done -bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard jekyll kitchen knife middleman nanoc rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails puma) +# Add $BUNDLED_COMMANDS to the bundled_commands list +for cmd in $BUNDLED_COMMANDS; do +  bundled_commands+=($cmd); +done  ## Functions +bundle_install() { +  if _bundler-installed && _within-bundled-project; then +    local bundler_version=`bundle version | cut -d' ' -f3` +    if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then +      if [[ "$OSTYPE" = darwin* ]] +      then +        local cores_num="$(sysctl hw.ncpu | awk '{print $2}')" +      else +        local cores_num="$(nproc)" +      fi +      bundle install --jobs=$cores_num $@ +    else +      bundle install $@ +    fi +  else +    echo "Can't 'bundle install' outside a bundled project" +  fi +} +  _bundler-installed() {    which bundle > /dev/null 2>&1  }  _within-bundled-project() { -  local check_dir=$PWD -  while [ $check_dir != "/" ]; do +  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 -    bundle exec $@ +    if _binstubbed $1; then +      ./bin/$@ +    else +      bundle exec $@ +    fi    else      $@    fi @@ -46,7 +105,6 @@ for cmd in $bundled_commands; do    alias $cmd=bundled_$cmd    if which _$cmd > /dev/null 2>&1; then -        compdef _$cmd bundled_$cmd=$cmd +    compdef _$cmd bundled_$cmd=$cmd    fi  done -  | 
