bundler.plugin.zsh 1.8 KB

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