bundler.plugin.zsh 1.8 KB

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