From 30361385d90709097f585856e578e7e00b7e3ca7 Mon Sep 17 00:00:00 2001 From: Charles Gould Date: Mon, 6 Jan 2025 00:04:54 -0600 Subject: [PATCH] java: remove SDKMAN, sdkman-for-fish --- fish/completions/sdk.fish | 243 ----------------------- fish/conf.d/sdk.fish | 111 ----------- fish/fish_plugins | 1 - fish/functions/__sdkman-noexport-init.sh | 234 ---------------------- fish/functions/sdk.fish | 42 ---- 5 files changed, 631 deletions(-) delete mode 100644 fish/completions/sdk.fish delete mode 100644 fish/conf.d/sdk.fish delete mode 100644 fish/functions/__sdkman-noexport-init.sh delete mode 100644 fish/functions/sdk.fish diff --git a/fish/completions/sdk.fish b/fish/completions/sdk.fish deleted file mode 100644 index 54693df..0000000 --- a/fish/completions/sdk.fish +++ /dev/null @@ -1,243 +0,0 @@ -# Defines autocompletion for SDKMAN! - -# Copyright (c) 2018-2023 Raphael Reitzig -# MIT License (MIT) -# https://github.com/reitzig/sdkman-for-fish - -# Guard: SDKMAN! needs to be installed -if not test -f "$SDKMAN_DIR/bin/sdkman-init.sh" - exit 0 -end - -# # # # # # -# Completion trigger predicates -# # # # # # - -# Test if there is no command -function __fish_sdkman_no_command - set cmd (commandline -opc) - - if [ (count $cmd) -eq 1 ] - return 0 - end - return 1 -end - -# Test if the main command matches one of the parameters -function __fish_sdkman_using_command - set cmd (commandline -opc) - - if [ (count $cmd) -eq 2 ] - if contains $cmd[2] $argv - return 0 - end - end - return 1 -end - -function __fish_sdkman_specifying_candidate - set cmd (commandline -opc) - - if [ (count $cmd) -eq 3 ] # currently, sdk does not support multiple versions - if contains $cmd[2] $argv - return 0 - end - end - return 1 -end - -function __fish_sdkman_command_has_enough_parameters - set cmd (commandline -opc) - - if [ (count $cmd) -ge (math $argv[1] + 2) ]; and contains $cmd[2] $argv[2..-1] - return 0 - end - return 1 -end - -# # # # # # -# Data collectors -# # # # # # - -function __fish_sdkman_candidates - cat "$SDKMAN_DIR"/var/candidates | string replace -a -r ',' '\n' -end - -function __fish_sdkman_candidates_with_versions - set regexpHome (string replace -a '/' '\\/' "$HOME/") - - find "$SDKMAN_DIR"/candidates/ -mindepth 2 -maxdepth 2 -name '*current' \ - | awk -F '/' '{ print $(NF-1) }' \ - | sort -u -end - -function __fish_sdkman_installed_versions - set cmd (commandline -opc) - if [ -d "$SDKMAN_DIR"/candidates/$cmd[3]/current ] - ls -v1 "$SDKMAN_DIR"/candidates/$cmd[3] | grep -v current - end -end - -# # # # # # -# Completion specification -# # # # # # - -# install -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'i install' \ - -d 'Install new version' -complete -c sdk -f -n '__fish_sdkman_using_command i install' \ - -a "(__fish_sdkman_candidates)" -# TODO complete available versions --> issue #4 -complete -c sdk -f -n '__fish_sdkman_specifying_candidate i install' \ - -a 'a.b.c' \ - -d "version list unavailable" -complete -c sdk -f -n '__fish_sdkman_specifying_candidate i install' \ - -a 'x.y.z' \ - -d "Specify path to install custom version." -# Implicit: complete files as fourth parameter -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 3 i install' - # block - -# uninstall -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'rm uninstall' -d 'Uninstall version' -complete -c sdk -f -n '__fish_sdkman_using_command rm uninstall' \ - -a "(__fish_sdkman_candidates_with_versions)" -complete -c sdk -f -n '__fish_sdkman_specifying_candidate rm uninstall' \ - -a "(__fish_sdkman_installed_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 rm uninstall' - # block - -# list -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'ls list' \ - -d 'List versions' -complete -c sdk -f -n '__fish_sdkman_using_command ls list' \ - -a "(__fish_sdkman_candidates)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ls list' - # block - -# use -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'u use' \ - -d 'Use specific version' -complete -c sdk -f -n '__fish_sdkman_using_command u use' \ - -a "(__fish_sdkman_candidates_with_versions)" -complete -c sdk -f -n '__fish_sdkman_specifying_candidate u use' \ - -a "(__fish_sdkman_installed_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 u use' - # block - -# default -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'd default' \ - -d 'Set default version' -complete -c sdk -f -n '__fish_sdkman_using_command d default' \ - -a "(__fish_sdkman_candidates_with_versions)" -complete -c sdk -f -n '__fish_sdkman_specifying_candidate d default' \ - -a "(__fish_sdkman_installed_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 d default' - # block - -# current -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'c current' \ - -d 'Display current version' -complete -c sdk -f -n '__fish_sdkman_using_command c current' \ - -a "(__fish_sdkman_candidates)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 c current' - # block - -# upgrade -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'ug upgrade' \ - -d 'Display what is outdated' -complete -c sdk -f -n '__fish_sdkman_using_command ug upgrade' \ - -a "(__fish_sdkman_candidates_with_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ug upgrade' - # block - -# version -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'v version' \ - -d 'Display version' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 v version' - # block - -# help -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'help' \ - -d 'Display help message' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 h help' - # block - -# offline -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'offline' \ - -d 'Set offline status' -complete -c sdk -f -n '__fish_sdkman_using_command offline' \ - -a 'enable' \ - -d 'Make sdk work while offline' -complete -c sdk -f -n '__fish_sdkman_using_command offline' \ - -a 'disable' \ - -d 'Turn on all features' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 offline' - # block - -# selfupdate -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'selfupdate' \ - -d 'Update sdk' -complete -c sdk -f -n '__fish_sdkman_using_command selfupdate' \ - -a 'force' \ - -d 'Force re-install of current version' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 selfupdate' - # block - -# update -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'update' \ - -d 'Reload the candidate list' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 update' - # block - -# flush -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'flush' \ - -d 'Clear out archives and temporary storage folders' -complete -c sdk -f -n '__fish_sdkman_using_command flush' \ - -a 'temp' \ - -d 'Clear out staging work folder' -complete -c sdk -f -n '__fish_sdkman_using_command flush' \ - -a 'version' \ - -d 'Flush version file' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 flush' - # block - -# env -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'e env' \ - -d 'Load environment from .sdkmanrc file' -complete -c sdk -f -n '__fish_sdkman_using_command e env' \ - -a 'init' \ - -d 'Initialize .sdkmanrc file' -complete -c sdk -f -n '__fish_sdkman_using_command e env' \ - -a 'install' \ - -d 'Install all candidate versions listed in .sdkmanrc' -complete -c sdk -f -n '__fish_sdkman_using_command e env' \ - -a 'clear' \ - -d 'Unload currently loaded environment' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 e env' - # block - -# home -complete -c sdk -f -n '__fish_sdkman_no_command' \ - -a 'h home' \ - -d 'Show installation folder of given candidate' -complete -c sdk -f -n '__fish_sdkman_using_command h home' \ - -a "(__fish_sdkman_candidates_with_versions)" -complete -c sdk -f -n '__fish_sdkman_specifying_candidate h home' \ - -a "(__fish_sdkman_installed_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 h home' - # block diff --git a/fish/conf.d/sdk.fish b/fish/conf.d/sdk.fish deleted file mode 100644 index 420dc56..0000000 --- a/fish/conf.d/sdk.fish +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/fish - -# Makes command and binaries from SDKMAN! available in fish. -# Delegates to bash for the `sdk` command. - -# Copyright (c) 2018-2023 Raphael Reitzig -# MIT License (MIT) -# https://github.com/reitzig/sdkman-for-fish - -# Account for custom install locations -if set -q __sdkman_custom_dir - set -gx SDKMAN_DIR "$__sdkman_custom_dir" -end -# Guard: SDKMAN! needs to be installed -if set -q SDKMAN_DIR; and not test -f "$SDKMAN_DIR/bin/sdkman-init.sh" - echo "WARNING: SDKMAN! installation path set to $SDKMAN_DIR, but no installation found there" - exit 0 -end - -# Unless overridden, use the default location: -if not set -q SDKMAN_DIR - set -gx SDKMAN_DIR "$HOME/.sdkman" -end - -set __fish_sdkman_init "$SDKMAN_DIR/bin/sdkman-init.sh" - -# Guard: SDKMAN! needs to be installed -if not test -f "$__fish_sdkman_init" - exit 0 -end - -# Copied from https://github.com/jorgebucaran/fisher/blob/main/functions/fisher.fish to be consistent: -set --query fisher_path || set --local fisher_path $__fish_config_dir -set __fish_sdkman_noexport_init "$fisher_path/functions/__sdkman-noexport-init.sh" - -# Hack for issue #19: -# Create version of sdkman-init that doesn't export any environment variables. -# Refresh if sdkman-init changed. -if begin not test -f "$__fish_sdkman_noexport_init"; - or env test "$__fish_sdkman_init" -nt "$__fish_sdkman_noexport_init" - end - mkdir -p (dirname $__fish_sdkman_noexport_init) - sed -E -e 's/^(\s*).*(export|to_path).*$/\1:/g' "$__fish_sdkman_init" \ - > "$__fish_sdkman_noexport_init" -end - -# Runs the given command in bash, capturing some side effects -# and repeating them on the current fish shell. -# Returns the same status code as the given command. -function __fish_sdkman_run_in_bash - # We need to leave stdin and stdout of sdk free for user interaction. - # So, pipe relevant environment variables (which might have changed) - # through a file. - # But since now getting the exit code of sdk itself is a hassle, - # pipe it as well. - # - # TODO: Can somebody get this to work without the overhead of a file? - set pipe (mktemp) - bash -c "$argv[1]; - echo -e \"\$?\" > $pipe; - env | grep -e '^SDKMAN_\|^PATH' >> $pipe; - env | grep -i -E \"^(`echo \${SDKMAN_CANDIDATES_CSV} | sed 's/,/|/g'`)_HOME\" >> $pipe; - echo \"SDKMAN_OFFLINE_MODE=\${SDKMAN_OFFLINE_MODE}\" >> $pipe; - echo \"SDKMAN_ENV=\${SDKMAN_ENV}\" >> $pipe" # it's not an environment variable! - set bashDump (cat $pipe; rm $pipe) - - set sdkStatus $bashDump[1] - set bashEnv $bashDump[2..-1] - - # If SDKMAN! succeeded, copy relevant environment variables - # to the current shell (they might have changed) - if [ $sdkStatus = 0 ] - for line in $bashEnv - set parts (string split "=" $line) - set var $parts[1] - set value (string join "=" $parts[2..-1]) - - switch "$var" - case "PATH" - # Special treatment: need fish list instead - # of colon-separated list. - set value (string split : "$value") - end - - if test -n value - set -gx $var $value - # Note: This makes SDKMAN_{OFFLINE_MODE,ENV} environment variables. - # That gives it the behaviour we _want_! - end - end - end - - return $sdkStatus -end - -# If this is a subshell of a(n initialized) fish owned by the same user, -# no initialization necessary. -# Otherwise: -if not set -q SDKMAN_CANDIDATES_DIR; or test (ls -ld "$SDKMAN_CANDIDATES_DIR" | awk '{print $3}') != (whoami) - __fish_sdkman_run_in_bash "source $__fish_sdkman_init" -end - -# Set up auto_env -if grep -q "^sdkman_auto_env=true" "$SDKMAN_DIR/etc/config" - function __fish_sdkman_autoenv --on-variable PWD - # Run the (modified) init script, which performs the checks and calls for us! - __fish_sdkman_run_in_bash "source \"$__fish_sdkman_noexport_init\"" - - set -x SDKMAN_OLD_PWD "$PWD" # needed by the Bash implementation - end -end diff --git a/fish/fish_plugins b/fish/fish_plugins index 9e49cc3..0783ee1 100644 --- a/fish/fish_plugins +++ b/fish/fish_plugins @@ -1,3 +1,2 @@ jorgebucaran/fisher lilyball/nix-env.fish -reitzig/sdkman-for-fish@v2.1.0 diff --git a/fish/functions/__sdkman-noexport-init.sh b/fish/functions/__sdkman-noexport-init.sh deleted file mode 100644 index ba7520a..0000000 --- a/fish/functions/__sdkman-noexport-init.sh +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env bash - -# -# Copyright 2021 Marco Vermeulen -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# set env vars if not set -if [ -z "$SDKMAN_VERSION" ]; then -: -fi - -if [ -z "$SDKMAN_CANDIDATES_API" ]; then -: -fi - -if [ -z "$SDKMAN_DIR" ]; then -: -fi - -# Load the sdkman config if it exists. -if [ -f "${SDKMAN_DIR}/etc/config" ]; then - source "${SDKMAN_DIR}/etc/config" -fi - -# infer platform -function infer_platform() { - local kernel - local machine - - kernel="$(uname -s)" - machine="$(uname -m)" - - case $kernel in - Linux) - case $machine in - i686) - echo "LinuxX32" - ;; - x86_64) - echo "LinuxX64" - ;; - armv6l) - echo "LinuxARM32HF" - ;; - armv7l) - echo "LinuxARM32HF" - ;; - armv8l) - echo "LinuxARM32HF" - ;; - aarch64) - echo "LinuxARM64" - ;; - *) - echo "Exotic" - ;; - esac - ;; - Darwin) - case $machine in - x86_64) - echo "DarwinX64" - ;; - arm64) - if [[ "$sdkman_rosetta2_compatible" == 'true' ]]; then - echo "DarwinX64" - else - echo "DarwinARM64" - fi - ;; - *) - echo "DarwinX64" - ;; - esac - ;; - *) - echo "$kernel" - esac -} - -SDKMAN_PLATFORM="$(infer_platform | tr '[:upper:]' '[:lower:]')" -: - -# OS specific support (must be 'true' or 'false'). -cygwin=false -darwin=false -solaris=false -freebsd=false -SDKMAN_KERNEL="$(uname -s)" -case "${SDKMAN_KERNEL}" in - CYGWIN*) - cygwin=true - ;; - Darwin*) - darwin=true - ;; - SunOS*) - solaris=true - ;; - FreeBSD*) - freebsd=true -esac - -# Determine shell -zsh_shell=false -bash_shell=false - -if [[ -n "$ZSH_VERSION" ]]; then - zsh_shell=true -elif [[ -n "$BASH_VERSION" ]]; then - bash_shell=true -fi - -# Source sdkman module scripts and extension files. -# -# Extension files are prefixed with 'sdkman-' and found in the ext/ folder. -# Use this if extensions are written with the functional approach and want -# to use functions in the main sdkman script. For more details, refer to -# . -OLD_IFS="$IFS" -IFS=$'\n' -scripts=($(find "${SDKMAN_DIR}/src" "${SDKMAN_DIR}/ext" -type f -name 'sdkman-*.sh')) -for f in "${scripts[@]}"; do - source "$f" -done -IFS="$OLD_IFS" -unset OLD_IFS scripts f - -# Create upgrade delay file if it doesn't exist -if [[ ! -f "${SDKMAN_DIR}/var/delay_upgrade" ]]; then - touch "${SDKMAN_DIR}/var/delay_upgrade" -fi - -# set curl connect-timeout and max-time -if [[ -z "$sdkman_curl_connect_timeout" ]]; then sdkman_curl_connect_timeout=7; fi -if [[ -z "$sdkman_curl_max_time" ]]; then sdkman_curl_max_time=10; fi - -# set curl retry -if [[ -z "${sdkman_curl_retry}" ]]; then sdkman_curl_retry=0; fi - -# set curl retry max time in seconds -if [[ -z "${sdkman_curl_retry_max_time}" ]]; then sdkman_curl_retry_max_time=60; fi - -# set curl to continue downloading automatically -if [[ -z "${sdkman_curl_continue}" ]]; then sdkman_curl_continue=true; fi - -# read list of candidates and set array -SDKMAN_CANDIDATES_CACHE="${SDKMAN_DIR}/var/candidates" -SDKMAN_CANDIDATES_CSV=$(<"$SDKMAN_CANDIDATES_CACHE") -__sdkman_echo_debug "Setting candidates csv: $SDKMAN_CANDIDATES_CSV" -if [[ "$zsh_shell" == 'true' ]]; then - SDKMAN_CANDIDATES=(${(s:,:)SDKMAN_CANDIDATES_CSV}) -else - IFS=',' read -a SDKMAN_CANDIDATES <<< "${SDKMAN_CANDIDATES_CSV}" -fi - -: - -for candidate_name in "${SDKMAN_CANDIDATES[@]}"; do - candidate_dir="${SDKMAN_CANDIDATES_DIR}/${candidate_name}/current" - if [[ -h "$candidate_dir" || -d "${candidate_dir}" ]]; then -: -: - fi -done -unset candidate_name candidate_dir -: - -# source completion scripts -if [[ "$sdkman_auto_complete" == 'true' ]]; then - if [[ "$zsh_shell" == 'true' ]]; then - # initialize zsh completions (if not already done) - if ! (( $+functions[compdef] )) ; then - autoload -Uz compinit - if [[ $ZSH_DISABLE_COMPFIX == 'true' ]]; then - compinit -u -C - else - compinit - fi - fi - autoload -U bashcompinit - bashcompinit - source "${SDKMAN_DIR}/contrib/completion/bash/sdk" - __sdkman_echo_debug "ZSH completion script loaded..." - elif [[ "$bash_shell" == 'true' ]]; then - source "${SDKMAN_DIR}/contrib/completion/bash/sdk" - __sdkman_echo_debug "Bash completion script loaded..." - else - __sdkman_echo_debug "No completion scripts found for $SHELL" - fi -fi - -if [[ "$sdkman_auto_env" == "true" ]]; then - if [[ "$zsh_shell" == "true" ]]; then - function sdkman_auto_env() { - if [[ -n $SDKMAN_ENV ]] && [[ ! $PWD =~ ^$SDKMAN_ENV ]]; then - sdk env clear - fi - if [[ -f .sdkmanrc ]]; then - sdk env - fi - } - - chpwd_functions+=(sdkman_auto_env) - else - function sdkman_auto_env() { - if [[ -n $SDKMAN_ENV ]] && [[ ! $PWD =~ ^$SDKMAN_ENV ]]; then - sdk env clear - fi - if [[ "$SDKMAN_OLD_PWD" != "$PWD" ]] && [[ -f ".sdkmanrc" ]]; then - sdk env - fi - -: - } - - trimmed_prompt_command="${PROMPT_COMMAND%"${PROMPT_COMMAND##*[![:space:]]}"}" - [[ -z "$trimmed_prompt_command" ]] && PROMPT_COMMAND="sdkman_auto_env" || PROMPT_COMMAND="${trimmed_prompt_command%\;};sdkman_auto_env" - fi - - sdkman_auto_env -fi diff --git a/fish/functions/sdk.fish b/fish/functions/sdk.fish deleted file mode 100644 index 25def1f..0000000 --- a/fish/functions/sdk.fish +++ /dev/null @@ -1,42 +0,0 @@ -# Wrapper function for SDKMAN! - -# Copyright (c) 2018-2023 Raphael Reitzig -# MIT License (MIT) -# https://github.com/reitzig/sdkman-for-fish - -function sdk -d "Manage SDKs" - # Guard: SDKMAN! needs to be installed - if not test -f "$__fish_sdkman_init" - # Propose to install SDKMAN! - - function read_confirm - while true - read -l -P "$argv[1] [y/N] " confirm - - switch $confirm - case Y y - return 0 - case '' N n - return 1 - end - end - end - - if read_confirm "You don't seem to have SDKMAN! installed. Install now?" - if not which curl > /dev/null - echo "curl required" - return 1 - end - if not which bash > /dev/null - echo "bash required" - return 1 - end - - curl -s "https://get.sdkman.io" | bash | sed '/All done!/q' - echo "Please open a new terminal/shell to load SDKMAN!" - end - else - # Declare the _actual_ sdk command for fish - __fish_sdkman_run_in_bash "source \"$__fish_sdkman_noexport_init\" && sdk $argv" - end -end