bundler.plugin.zsh 1.9 KB

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