mirror of
https://github.com/ohmybash/oh-my-bash.git
synced 2024-09-21 10:27:09 +00:00
52987b3d35
* style(completions/defaults): fix styles * style(completions/go): adjust styles * style(completions/gradle): adjust styles * style(completions/grunt): adjust styles * style(completions/maven): adjust styles * style(completions/salt): adjust styles * style(completions/sdkman): adjust styles * style(completions/tmux): adjust styles * style(completions/vagrant): adjust styles * style(completions/vault): adjust styles
86 lines
2.8 KiB
Bash
86 lines
2.8 KiB
Bash
#! bash oh-my-bash.module
|
|
#
|
|
# This probably originates from Bash-it.
|
|
#------------------------------------------------------------------------------
|
|
|
|
if ! declare -F __sdkman_build_version_csv &>/dev/null; then
|
|
# @fn __sdkman_build_version_csv
|
|
# Copyright 2021 Marco Vermeulen.
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
#
|
|
# This function was taken from "main/bash/sdkman-list.sh @
|
|
# sdkman/sdkman-cli".
|
|
# https://github.com/sdkman/sdkman-cli/blob/19e5c081297d6a8d1ce8a8b54631bb3f8e8e861b/src/main/bash/sdkman-list.sh#L51
|
|
function __sdkman_build_version_csv {
|
|
local candidate=$1
|
|
local versions_csv=""
|
|
if [[ -d $SDKMAN_CANDIDATES_DIR/$candidate ]]; then
|
|
for version in $(find "$SDKMAN_CANDIDATES_DIR/$candidate" -maxdepth 1 -mindepth 1 \( -type l -o -type d \) -exec basename '{}' \; | sort -r); do
|
|
if [[ $version != 'current' ]]; then
|
|
versions_csv=$version,$versions_csv
|
|
fi
|
|
done
|
|
versions_csv=${versions_csv%?}
|
|
fi
|
|
echo "$versions_csv"
|
|
}
|
|
fi
|
|
|
|
function _omb_completion_sdkman {
|
|
local cur=${COMP_WORDS[COMP_CWORD]}
|
|
COMPREPLY=()
|
|
|
|
if ((COMP_CWORD == 1)); then
|
|
COMPREPLY=($(compgen -W "install uninstall rm list ls use current outdated version default selfupdate broadcast offline help flush" -- "$cur"))
|
|
elif ((COMP_CWORD == 2)); then
|
|
case ${COMP_WORDS[COMP_CWORD-1]} in
|
|
"install" | "uninstall" | "rm" | "list" | "ls" | "use" | "current" | "outdated")
|
|
local candidates
|
|
candidates=$(tr ',' ' ' <<< "$SDKMAN_CANDIDATES_CSV")
|
|
COMPREPLY=($(compgen -W "$candidates" -- "$cur"))
|
|
;;
|
|
"offline")
|
|
COMPREPLY=($(compgen -W "enable disable" -- "$cur"))
|
|
;;
|
|
"selfupdate")
|
|
COMPREPLY=($(compgen -W "force" -P "[" -S "]" -- "$cur"))
|
|
;;
|
|
"flush")
|
|
COMPREPLY=($(compgen -W "candidates broadcast archives temp" -- "$cur"))
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
elif ((COMP_CWORD == 3)); then
|
|
case ${COMP_WORDS[COMP_CWORD-2]} in
|
|
"install" | "uninstall" | "rm" | "use" | "default")
|
|
local candidate_versions
|
|
_omb_completion_sdkman__candidate_versions "${COMP_WORDS[COMP_CWORD-1]}"
|
|
COMPREPLY=($(compgen -W "$candidate_versions" -- "$cur"))
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function _omb_completion_sdkman__candidate_versions {
|
|
local local_versions=$(_omb_completion_sdkman__cleanup_local_versions "$1")
|
|
if [[ $SDKMAN_OFFLINE_MODE == "true" ]]; then
|
|
candidate_versions=$local_versions
|
|
else
|
|
local online_versions=$(curl -s "$SDKMAN_SERVICE/candidates/$1" | tr ',' ' ')
|
|
candidate_versions="$(printf '%s\n' $online_versions $local_versions | sort -u) "
|
|
fi
|
|
|
|
}
|
|
|
|
function _omb_completion_sdkman__cleanup_local_versions {
|
|
__sdkman_build_version_csv "$1"
|
|
tr ',' ' ' <<< "$CSV"
|
|
}
|
|
|
|
complete -F _omb_completion_sdkman sdk
|