bundler.plugin.zsh 1.82 KB
Newer Older
1
alias be="bundle exec"
Hakan Ensari's avatar
Hakan Ensari committed
2
alias bl="bundle list"
3
alias bp="bundle package"
4
alias bo="bundle open"
Hakan Ensari's avatar
Hakan Ensari committed
5
alias bu="bundle update"
6
7
8

# The following is based on https://github.com/gma/bundler-exec

DeLynn Berry's avatar
DeLynn Berry committed
9
bundled_commands=(annotate berks cap capify cucumber foodcritic foreman guard irb jekyll kitchen knife middleman nanoc puma rackup rainbows rake rspec ruby shotgun spec spin spork strainer tailor taps thin thor unicorn unicorn_rails)
10

11
12
13
14
15
# Remove $UNBUNDLED_COMMANDS from the bundled_commands list
for cmd in $UNBUNDLED_COMMANDS; do
  bundled_commands=(${bundled_commands#$cmd});
done

16
17
## Functions

18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
bi() {
  if _bundler-installed && _within-bundled-project; then
    local bundler_version=`bundle version | cut -d' ' -f3`
    if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
      if [[ "$(uname)" == 'Darwin' ]]
      then
        local cores_num="$(sysctl hw.ncpu | awk '{print $2}')"
      else
        local cores_num="$(nproc)"
      fi
      bundle install --jobs=$cores_num $@
    else
      bundle install $@
    fi
  else
    echo "Can't 'bundle install' outside a bundled project"
  fi
}

37
38
39
40
41
42
_bundler-installed() {
  which bundle > /dev/null 2>&1
}

_within-bundled-project() {
  local check_dir=$PWD
43
  while [ $check_dir != "/" ]; do
44
45
46
47
48
49
    [ -f "$check_dir/Gemfile" ] && return
    check_dir="$(dirname $check_dir)"
  done
  false
}

50
51
52
53
_binstubbed() {
  [ -f "./bin/${1}" ]
}

54
55
_run-with-bundler() {
  if _bundler-installed && _within-bundled-project; then
56
57
58
59
60
    if _binstubbed $1; then
      bundle exec "./bin/$@"
    else
      bundle exec $@
    fi
61
  else
Hakan Ensari's avatar
Hakan Ensari committed
62
    $@
63
64
65
  fi
}

66
67
68
69
70
71
72
73
74
75
76
## Main program
for cmd in $bundled_commands; do
  eval "function unbundled_$cmd () { $cmd \$@ }"
  eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}"
  alias $cmd=bundled_$cmd

  if which _$cmd > /dev/null 2>&1; then
        compdef _$cmd bundled_$cmd=$cmd
  fi
done