diff --git a/bin/rbenv b/bin/rbenv new file mode 100755 index 0000000000..6f3faab09c --- /dev/null +++ b/bin/rbenv @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +command="$1" +if [ -z "$command" ]; then + echo "rbenv 0.1.0" >&2 + +else + command_path="$(command -v "rbenv-$command" || true)" + if [ -z "$command_path" ]; then + echo "rbenv: no such command \`$command'" >&2 + exit 1 + fi + + shift 1 + exec "$command_path" $* +fi diff --git a/bin/rbenv-exec b/bin/rbenv-exec new file mode 100755 index 0000000000..77de1dec08 --- /dev/null +++ b/bin/rbenv-exec @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +RBENV_COMMAND="$1" +if [ -z "$RBENV_COMMAND" ]; then + echo "usage: rbenv exec COMMAND [arg1 arg2...]" >&2 + exit 1 +fi + +RBENV_COMMAND_PATH="$(rbenv-which "$RBENV_COMMAND")" + +shift 1 +exec -a "$RBENV_COMMAND" "$RBENV_COMMAND_PATH" $* diff --git a/bin/rbenv-rehash b/bin/rbenv-rehash new file mode 100755 index 0000000000..56cb8bd09f --- /dev/null +++ b/bin/rbenv-rehash @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +cd "$HOME/.rbenv/shims" +rm * + +for file in ../versions/*/bin/*; do + ln -fs ../bin/rbenv-shim "${file##*/}" +done diff --git a/bin/rbenv-set-default b/bin/rbenv-set-default new file mode 100755 index 0000000000..8567778e68 --- /dev/null +++ b/bin/rbenv-set-default @@ -0,0 +1,15 @@ +#!/bin/bash + +RBENV_VERSION="$1" +if [ -z "$RBENV_VERSION" ]; then + echo "usage: rbenv set-default VERSION" >&2 + exit 1 +fi + +RBENV_VERSION_PATH="${HOME}/.rbenv/versions/${RBENV_VERSION}" +if [ ! -d "$RBENV_VERSION_PATH" ]; then + echo "rbenv: version \`${RBENV_VERSION}' not installed" >&2 + exit 1 +fi + +echo "$RBENV_VERSION" > "${HOME}/.rbenv/default" diff --git a/bin/rbenv-shim b/bin/rbenv-shim new file mode 100755 index 0000000000..36b2fc6e4a --- /dev/null +++ b/bin/rbenv-shim @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +exec rbenv-exec "${0##*/}" $* diff --git a/bin/rbenv-version b/bin/rbenv-version new file mode 100755 index 0000000000..b4366688ea --- /dev/null +++ b/bin/rbenv-version @@ -0,0 +1,48 @@ +#!/bin/bash + +set -e + +read_version_file() { + egrep -m 1 '[^[:space:]]' "$1" +} + +find_version_file() { + root="$(pwd)" + while [ -n "$root" ]; do + if [ -e "${root}/.rbenv-version" ]; then + echo "${root}/.rbenv-version" + return 0 + fi + root="${root%/*}" + done + return 1 +} + +find_default_version_file() { + default_path="$HOME/.rbenv/default" + if [ -e "$default_path" ]; then + echo "$default_path" + return 0 + fi + return 1 +} + +if [ -z "$RBENV_VERSION" ]; then + RBENV_VERSION_FILE="$(find_version_file || find_default_version_file || true)" + + if [ -n "$RBENV_VERSION_FILE" ]; then + RBENV_VERSION="$(read_version_file "$RBENV_VERSION_FILE")" + else + echo "rbenv: no default version specified" >&2 + exit 1 + fi +fi + +RBENV_VERSION_PATH="${HOME}/.rbenv/versions/${RBENV_VERSION}" + +if [ -d "$RBENV_VERSION_PATH" ]; then + echo "$RBENV_VERSION" +else + echo "rbenv: version \`$RBENV_VERSION' is not installed" >&2 + exit 1 +fi diff --git a/bin/rbenv-versions b/bin/rbenv-versions new file mode 100755 index 0000000000..2ae67e7873 --- /dev/null +++ b/bin/rbenv-versions @@ -0,0 +1,15 @@ +#!/bin/bash + +RBENV_VERSION="$(rbenv-version)" + +for path in ~/.rbenv/versions/*; do + if [ -d "$path" ]; then + version="${path##*/}" + + if [ "$version" == "$RBENV_VERSION" ]; then + echo "* ${version##*/}" + else + echo " ${version##*/}" + fi + fi +done diff --git a/bin/rbenv-which b/bin/rbenv-which new file mode 100755 index 0000000000..c14134e258 --- /dev/null +++ b/bin/rbenv-which @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +RBENV_VERSION="$(rbenv-version)" +RBENV_COMMAND="$1" +RBENV_COMMAND_PATH="${HOME}/.rbenv/versions/${RBENV_VERSION}/bin/${RBENV_COMMAND}" + +if [ -x "$RBENV_COMMAND_PATH" ]; then + echo "$RBENV_COMMAND_PATH" +else + echo "rbenv: $1: command not found" >&2 + exit 127 +fi