bundler.plugin.zsh 1.95 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
alias bi="bundle_install"
7

8
9
10
11
12
13
14
15
16
17
18
19
20
bundled_commands=(
  annotate
  cap
  capify
  cucumber
  foodcritic
  guard
  irb
  jekyll
  kitchen
  knife
  middleman
  nanoc
21
  pry
22
23
24
25
26
27
  puma
  rackup
  rainbows
  rake
  rspec
  shotgun
28
  sidekiq
29
30
  spec
  spork
31
  spring
32
33
34
35
36
37
38
39
  strainer
  tailor
  taps
  thin
  thor
  unicorn
  unicorn_rails
)
40

41
42
43
44
45
# Remove $UNBUNDLED_COMMANDS from the bundled_commands list
for cmd in $UNBUNDLED_COMMANDS; do
  bundled_commands=(${bundled_commands#$cmd});
done

46
47
48
49
50
# Add $BUNDLED_COMMANDS to the bundled_commands list
for cmd in $BUNDLED_COMMANDS; do
  bundled_commands+=($cmd);
done

51
52
## Functions

53
bundle_install() {
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  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
}

72
73
74
75
76
_bundler-installed() {
  which bundle > /dev/null 2>&1
}

_within-bundled-project() {
77
78
  local check_dir="$PWD"
  while [ "$check_dir" != "/" ]; do
79
80
81
82
83
84
    [ -f "$check_dir/Gemfile" ] && return
    check_dir="$(dirname $check_dir)"
  done
  false
}

85
86
87
88
_binstubbed() {
  [ -f "./bin/${1}" ]
}

89
90
_run-with-bundler() {
  if _bundler-installed && _within-bundled-project; then
91
    if _binstubbed $1; then
92
      ./bin/$@
93
94
95
    else
      bundle exec $@
    fi
96
  else
Hakan Ensari's avatar
Hakan Ensari committed
97
    $@
98
99
100
  fi
}

101
102
103
104
105
106
107
## 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
108
    compdef _$cmd bundled_$cmd=$cmd
109
110
  fi
done