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

## Functions
function _bundler-installed
  which bundle >/dev/null ^&1
end

function _within-bundled-project
  set -l check_dir $PWD
  while [ $check_dir != "/" ]
    test -f "$check_dir/Gemfile"; and return
    set check_dir (dirname $check_dir)
  end
  false
end

function _run-with-bundler
  if begin; _bundler-installed; and _within-bundled-project; end
    command bundle exec $argv
  else
    eval command $argv
  end
end

### Main program
set -l bundled_commands annotate cap capify cucumber dashing foreman guard middleman nanoc puma rackup rainbows rake rspec ruby shotgun sidekiq spec spinach spork thin thor unicorn unicorn_rails

for cmd in $bundled_commands
  if not contains $cmd bundle gem
    eval "function $cmd; _run-with-bundler $cmd \$argv;end"
  end
end