bundler.plugin.zsh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. alias be="bundle exec"
  2. alias bl="bundle list"
  3. alias bp="bundle package"
  4. alias bo="bundle open"
  5. alias bu="bundle update"
  6. alias bi="bundle_install"
  7. # The following is based on https://github.com/gma/bundler-exec
  8. 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)
  9. # Remove $UNBUNDLED_COMMANDS from the bundled_commands list
  10. for cmd in $UNBUNDLED_COMMANDS; do
  11. bundled_commands=(${bundled_commands#$cmd});
  12. done
  13. ## Functions
  14. bundle_install() {
  15. if _bundler-installed && _within-bundled-project; then
  16. local bundler_version=`bundle version | cut -d' ' -f3`
  17. if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
  18. if [[ "$(uname)" == 'Darwin' ]]
  19. then
  20. local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
  21. else
  22. local cores_num="$(nproc)"
  23. fi
  24. bundle install --jobs=$cores_num $@
  25. else
  26. bundle install $@
  27. fi
  28. else
  29. echo "Can't 'bundle install' outside a bundled project"
  30. fi
  31. }
  32. _bundler-installed() {
  33. which bundle > /dev/null 2>&1
  34. }
  35. _within-bundled-project() {
  36. local check_dir="$PWD"
  37. while [ "$check_dir" != "/" ]; do
  38. [ -f "$check_dir/Gemfile" ] && return
  39. check_dir="$(dirname $check_dir)"
  40. done
  41. false
  42. }
  43. _run-with-bundler() {
  44. if _bundler-installed && _within-bundled-project; then
  45. bundle exec $@
  46. else
  47. $@
  48. fi
  49. }
  50. ## Main program
  51. for cmd in $bundled_commands; do
  52. eval "function unbundled_$cmd () { $cmd \$@ }"
  53. eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}"
  54. alias $cmd=bundled_$cmd
  55. if which _$cmd > /dev/null 2>&1; then
  56. compdef _$cmd bundled_$cmd=$cmd
  57. fi
  58. done