bundler.plugin.zsh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. bundled_commands=(
  8. annotate
  9. cap
  10. capify
  11. cucumber
  12. foodcritic
  13. guard
  14. irb
  15. jekyll
  16. kitchen
  17. knife
  18. middleman
  19. nanoc
  20. puma
  21. rackup
  22. rainbows
  23. rake
  24. rspec
  25. shotgun
  26. sidekiq
  27. spec
  28. spork
  29. spring
  30. strainer
  31. tailor
  32. taps
  33. thin
  34. thor
  35. unicorn
  36. unicorn_rails
  37. )
  38. # Remove $UNBUNDLED_COMMANDS from the bundled_commands list
  39. for cmd in $UNBUNDLED_COMMANDS; do
  40. bundled_commands=(${bundled_commands#$cmd});
  41. done
  42. ## Functions
  43. bundle_install() {
  44. if _bundler-installed && _within-bundled-project; then
  45. local bundler_version=`bundle version | cut -d' ' -f3`
  46. if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
  47. if [[ "$(uname)" == 'Darwin' ]]
  48. then
  49. local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
  50. else
  51. local cores_num="$(nproc)"
  52. fi
  53. bundle install --jobs=$cores_num $@
  54. else
  55. bundle install $@
  56. fi
  57. else
  58. echo "Can't 'bundle install' outside a bundled project"
  59. fi
  60. }
  61. _bundler-installed() {
  62. which bundle > /dev/null 2>&1
  63. }
  64. _within-bundled-project() {
  65. local check_dir="$PWD"
  66. while [ "$check_dir" != "/" ]; do
  67. [ -f "$check_dir/Gemfile" ] && return
  68. check_dir="$(dirname $check_dir)"
  69. done
  70. false
  71. }
  72. _binstubbed() {
  73. [ -f "./bin/${1}" ]
  74. }
  75. _run-with-bundler() {
  76. if _bundler-installed && _within-bundled-project; then
  77. if _binstubbed $1; then
  78. ./bin/$@
  79. else
  80. bundle exec $@
  81. fi
  82. else
  83. $@
  84. fi
  85. }
  86. ## Main program
  87. for cmd in $bundled_commands; do
  88. eval "function unbundled_$cmd () { $cmd \$@ }"
  89. eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}"
  90. alias $cmd=bundled_$cmd
  91. if which _$cmd > /dev/null 2>&1; then
  92. compdef _$cmd bundled_$cmd=$cmd
  93. fi
  94. done