#!/usr/bin/env bash # Summary: List all available rbenv commands # Usage: rbenv commands [--sh|--no-sh] # # List names of all rbenv commands, including 3rd-party ones found in the # PATH or in rbenv plugins. With `--sh`, list only shell commands. # # This functionality is mainly meant for scripting. To see usage help for # rbenv, run `rbenv help`. set -e [ -n "$RBENV_DEBUG" ] && set -x # Provide rbenv completions if [ "$1" = "--complete" ]; then echo --sh echo --no-sh exit fi if [ "$1" = "--sh" ]; then sh=1 shift elif [ "$1" = "--no-sh" ]; then nosh=1 shift fi if [ "$(type -t readarray)" = "builtin" ]; then readarray -d : -t paths < <(printf "%s" "$PATH") else # bash 3.x compatibility IFS=: read -r -a paths <<<"$PATH" || true fi shopt -s nullglob { for path in "${paths[@]}"; do for command in "${path}/rbenv-"*; do command="${command##*rbenv-}" if [ -n "$sh" ]; then if [ "${command:0:3}" = "sh-" ]; then echo "${command##sh-}" fi elif [ -n "$nosh" ]; then if [ "${command:0:3}" != "sh-" ]; then echo "${command##sh-}" fi else echo "${command##sh-}" fi done done } | sort | uniq