diff --git a/completion/available/sdkman.completion.bash b/completion/available/sdkman.completion.bash new file mode 100644 index 00000000..2bf217bb --- /dev/null +++ b/completion/available/sdkman.completion.bash @@ -0,0 +1,71 @@ +_sdkman_complete() +{ + local CANDIDATES + local CANDIDATE_VERSIONS + + COMPREPLY=() + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $(compgen -W "install uninstall rm list ls use current outdated version default selfupdate broadcast offline help flush" -- ${COMP_WORDS[COMP_CWORD]}) ) + elif [ $COMP_CWORD -eq 2 ]; then + case "${COMP_WORDS[COMP_CWORD-1]}" in + "install" | "uninstall" | "rm" | "list" | "ls" | "use" | "current" | "outdated" ) + CANDIDATES=$(echo "${SDKMAN_CANDIDATES_CSV}" | tr ',' ' ') + COMPREPLY=( $(compgen -W "$CANDIDATES" -- ${COMP_WORDS[COMP_CWORD]}) ) + ;; + "offline" ) + COMPREPLY=( $(compgen -W "enable disable" -- ${COMP_WORDS[COMP_CWORD]}) ) + ;; + "selfupdate" ) + COMPREPLY=( $(compgen -W "force" -P "[" -S "]" -- ${COMP_WORDS[COMP_CWORD]}) ) + ;; + "flush" ) + COMPREPLY=( $(compgen -W "candidates broadcast archives temp" -- ${COMP_WORDS[COMP_CWORD]}) ) + ;; + *) + ;; + esac + elif [ $COMP_CWORD -eq 3 ]; then + case "${COMP_WORDS[COMP_CWORD-2]}" in + "install" | "uninstall" | "rm" | "use" | "default" ) + _sdkman_candidate_versions ${COMP_WORDS[COMP_CWORD-1]} + COMPREPLY=( $(compgen -W "$CANDIDATE_VERSIONS" -- ${COMP_WORDS[COMP_CWORD]}) ) + ;; + *) + ;; + esac + fi + + return 0 +} + +_sdkman_candidate_versions(){ + + + CANDIDATE_LOCAL_VERSIONS=$(__sdkman_cleanup_local_versions $1) + if _sdkman_offline; then + CANDIDATE_VERSIONS=$CANDIDATE_LOCAL_VERSIONS + else + CANDIDATE_ONLINE_VERSIONS="$(curl -s "${SDKMAN_SERVICE}/candidates/$1" | tr ',' ' ')" + CANDIDATE_VERSIONS="$(echo $CANDIDATE_ONLINE_VERSIONS $CANDIDATE_LOCAL_VERSIONS |sort | uniq ) " + fi + +} + +__sdkman_cleanup_local_versions(){ + + __sdkmantool_build_version_csv $1 + echo $CSV | tr ',' ' ' + +} + +_sdkman_offline() +{ + if [ "$SDKMAN_ONLINE" = "true" ]; then + return 1 + else + return 0 + fi +} + +complete -F _sdkman_complete sdk diff --git a/plugins/available/sdkman.plugin.bash b/plugins/available/sdkman.plugin.bash new file mode 100644 index 00000000..0f3722b6 --- /dev/null +++ b/plugins/available/sdkman.plugin.bash @@ -0,0 +1,5 @@ +cite about-plugin +about-plugin 'Load Software Development Kit Manager' + +export SDKMAN_DIR="$HOME/.sdkman" +[[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" ]] && source "${SDKMAN_DIR}/bin/sdkman-init.sh"