bundler-exec.sh 1014 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. ## Functions
  3. rbenv-installed()
  4. {
  5. which rbenv > /dev/null 2>&1
  6. }
  7. bundler-installed()
  8. {
  9. if rbenv-installed; then
  10. rbenv which bundle > /dev/null 2>&1
  11. else
  12. which bundle > /dev/null 2>&1
  13. fi
  14. }
  15. within-bundled-project()
  16. {
  17. local dir="$(pwd)"
  18. while [ "$(dirname $dir)" != "/" ]; do
  19. [ -f "$dir/Gemfile" ] && return
  20. dir="$(dirname $dir)"
  21. done
  22. false
  23. }
  24. run-with-bundler()
  25. {
  26. if bundler-installed && within-bundled-project; then
  27. bundle exec $@
  28. else
  29. $@
  30. fi
  31. }
  32. ## Main program
  33. if rbenv-installed; then
  34. BUNDLED_COMMANDS=$(ls ~/.rbenv/shims)
  35. else
  36. BUNDLED_COMMANDS="${BUNDLED_COMMANDS:-
  37. cap
  38. capify
  39. cucumber
  40. foreman
  41. guard
  42. haml
  43. heroku
  44. html2haml
  45. rackup
  46. rails
  47. rake
  48. rake2thor
  49. rspec
  50. ruby
  51. sass
  52. sass-convert
  53. serve
  54. shotgun
  55. spec
  56. spork
  57. thin
  58. thor
  59. tilt
  60. tt
  61. turn
  62. unicorn
  63. unicorn_rails
  64. }"
  65. fi
  66. for CMD in $BUNDLED_COMMANDS; do
  67. if [[ $CMD != "bundle" && $CMD != "gem" ]]; then
  68. alias $CMD="run-with-bundler $CMD"
  69. fi
  70. done