mirror of
https://github.com/nvm-sh/nvm.git
synced 2025-10-26 04:10:36 +08:00
[Refactor] add nvm_wrap_with_color_code; allow no color code
This commit is contained in:
174
nvm.sh
174
nvm.sh
@@ -842,7 +842,7 @@ nvm_set_colors() {
|
||||
nvm_echo "Setting colors to: ${INSTALLED_COLOR} ${LTS_AND_SYSTEM_COLOR} ${CURRENT_COLOR} ${NOT_INSTALLED_COLOR} ${DEFAULT_COLOR}"
|
||||
nvm_echo "WARNING: Colors may not display because they are not supported in this shell."
|
||||
else
|
||||
nvm_echo_with_colors "Setting colors to: \033[$(nvm_print_color_code "${INSTALLED_COLOR}") ${INSTALLED_COLOR}\033[$(nvm_print_color_code "${LTS_AND_SYSTEM_COLOR}") ${LTS_AND_SYSTEM_COLOR}\033[$(nvm_print_color_code "${CURRENT_COLOR}") ${CURRENT_COLOR}\033[$(nvm_print_color_code "${NOT_INSTALLED_COLOR}") ${NOT_INSTALLED_COLOR}\033[$(nvm_print_color_code "${DEFAULT_COLOR}") ${DEFAULT_COLOR}\033[0m"
|
||||
nvm_echo_with_colors "Setting colors to: $(nvm_wrap_with_color_code "${INSTALLED_COLOR}" "${INSTALLED_COLOR}")$(nvm_wrap_with_color_code "${LTS_AND_SYSTEM_COLOR}" "${LTS_AND_SYSTEM_COLOR}")$(nvm_wrap_with_color_code "${CURRENT_COLOR}" "${CURRENT_COLOR}")$(nvm_wrap_with_color_code "${NOT_INSTALLED_COLOR}" "${NOT_INSTALLED_COLOR}")$(nvm_wrap_with_color_code "${DEFAULT_COLOR}" "${DEFAULT_COLOR}")"
|
||||
fi
|
||||
export NVM_COLORS="$1"
|
||||
else
|
||||
@@ -853,60 +853,73 @@ nvm_set_colors() {
|
||||
nvm_get_colors() {
|
||||
local COLOR
|
||||
local SYS_COLOR
|
||||
if [ -n "${NVM_COLORS-}" ]; then
|
||||
case $1 in
|
||||
1) COLOR=$(nvm_print_color_code "$(echo "$NVM_COLORS" | awk '{ print substr($0, 1, 1); }')");;
|
||||
2) COLOR=$(nvm_print_color_code "$(echo "$NVM_COLORS" | awk '{ print substr($0, 2, 1); }')");;
|
||||
3) COLOR=$(nvm_print_color_code "$(echo "$NVM_COLORS" | awk '{ print substr($0, 3, 1); }')");;
|
||||
4) COLOR=$(nvm_print_color_code "$(echo "$NVM_COLORS" | awk '{ print substr($0, 4, 1); }')");;
|
||||
5) COLOR=$(nvm_print_color_code "$(echo "$NVM_COLORS" | awk '{ print substr($0, 5, 1); }')");;
|
||||
6)
|
||||
SYS_COLOR=$(nvm_print_color_code "$(echo "$NVM_COLORS" | awk '{ print substr($0, 2, 1); }')")
|
||||
COLOR=$(nvm_echo "$SYS_COLOR" | command tr '0;' '1;')
|
||||
;;
|
||||
*)
|
||||
nvm_err "Invalid color index, ${1-}"
|
||||
return 1
|
||||
local COLORS
|
||||
COLORS="${NVM_COLORS:-bygre}"
|
||||
case $1 in
|
||||
1) COLOR=$(nvm_print_color_code "$(echo "$COLORS" | awk '{ print substr($0, 1, 1); }')");;
|
||||
2) COLOR=$(nvm_print_color_code "$(echo "$COLORS" | awk '{ print substr($0, 2, 1); }')");;
|
||||
3) COLOR=$(nvm_print_color_code "$(echo "$COLORS" | awk '{ print substr($0, 3, 1); }')");;
|
||||
4) COLOR=$(nvm_print_color_code "$(echo "$COLORS" | awk '{ print substr($0, 4, 1); }')");;
|
||||
5) COLOR=$(nvm_print_color_code "$(echo "$COLORS" | awk '{ print substr($0, 5, 1); }')");;
|
||||
6)
|
||||
SYS_COLOR=$(nvm_print_color_code "$(echo "$COLORS" | awk '{ print substr($0, 2, 1); }')")
|
||||
COLOR=$(nvm_echo "$SYS_COLOR" | command tr '0;' '1;')
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case $1 in
|
||||
1) COLOR='0;34m';;
|
||||
2) COLOR='0;33m';;
|
||||
3) COLOR='0;32m';;
|
||||
4) COLOR='0;31m';;
|
||||
5) COLOR='0;37m';;
|
||||
6) COLOR='1;33m';;
|
||||
*)
|
||||
nvm_err "Invalid color index, ${1-}"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
*)
|
||||
nvm_err "Invalid color index, ${1-}"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "$COLOR"
|
||||
nvm_echo "$COLOR"
|
||||
}
|
||||
|
||||
nvm_wrap_with_color_code() {
|
||||
local CODE
|
||||
CODE="$(nvm_print_color_code "${1}" 2>/dev/null ||:)"
|
||||
local TEXT
|
||||
TEXT="${2-}"
|
||||
if nvm_has_colors && [ -n "${CODE}" ]; then
|
||||
nvm_echo_with_colors "\033[${CODE}${TEXT}\033[0m"
|
||||
else
|
||||
nvm_echo "${TEXT}"
|
||||
fi
|
||||
}
|
||||
|
||||
nvm_wrap_with_color_code() {
|
||||
local CODE
|
||||
CODE="$(nvm_print_color_code "${1}" 2>/dev/null ||:)"
|
||||
local TEXT
|
||||
TEXT="${2-}"
|
||||
if nvm_has_colors && [ -n "${CODE}" ]; then
|
||||
nvm_echo_with_colors "\033[${CODE}${TEXT}\033[0m"
|
||||
else
|
||||
nvm_echo "${TEXT}"
|
||||
fi
|
||||
}
|
||||
|
||||
nvm_print_color_code() {
|
||||
case "${1-}" in
|
||||
'r') nvm_echo '0;31m';;
|
||||
'R') nvm_echo '1;31m';;
|
||||
'g') nvm_echo '0;32m';;
|
||||
'G') nvm_echo '1;32m';;
|
||||
'b') nvm_echo '0;34m';;
|
||||
'B') nvm_echo '1;34m';;
|
||||
'c') nvm_echo '0;36m';;
|
||||
'C') nvm_echo '1;36m';;
|
||||
'm') nvm_echo '0;35m';;
|
||||
'M') nvm_echo '1;35m';;
|
||||
'y') nvm_echo '0;33m';;
|
||||
'Y') nvm_echo '1;33m';;
|
||||
'k') nvm_echo '0;30m';;
|
||||
'K') nvm_echo '1;30m';;
|
||||
'e') nvm_echo '0;37m';;
|
||||
'W') nvm_echo '1;37m';;
|
||||
*) nvm_err 'Invalid color code';
|
||||
return 1
|
||||
'0') return 0 ;;
|
||||
'r') nvm_echo '0;31m' ;;
|
||||
'R') nvm_echo '1;31m' ;;
|
||||
'g') nvm_echo '0;32m' ;;
|
||||
'G') nvm_echo '1;32m' ;;
|
||||
'b') nvm_echo '0;34m' ;;
|
||||
'B') nvm_echo '1;34m' ;;
|
||||
'c') nvm_echo '0;36m' ;;
|
||||
'C') nvm_echo '1;36m' ;;
|
||||
'm') nvm_echo '0;35m' ;;
|
||||
'M') nvm_echo '1;35m' ;;
|
||||
'y') nvm_echo '0;33m' ;;
|
||||
'Y') nvm_echo '1;33m' ;;
|
||||
'k') nvm_echo '0;30m' ;;
|
||||
'K') nvm_echo '1;30m' ;;
|
||||
'e') nvm_echo '0;37m' ;;
|
||||
'W') nvm_echo '1;37m' ;;
|
||||
*)
|
||||
nvm_err "Invalid color code: ${1-}";
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -1699,15 +1712,15 @@ nvm_print_versions() {
|
||||
-v current_color="$CURRENT_COLOR" -v default_color="$DEFAULT_COLOR" \
|
||||
-v old_lts_color="$DEFAULT_COLOR" -v has_colors="$NVM_HAS_COLORS" '
|
||||
BEGIN {
|
||||
fmt_installed = has_colors ? ("\033[" installed_color "%15s\033[0m") : "%15s *";
|
||||
fmt_system = has_colors ? ("\033[" system_color "%15s\033[0m") : "%15s *";
|
||||
fmt_current = has_colors ? ("\033[" current_color "->%13s\033[0m") : "->%13s *";
|
||||
fmt_installed = has_colors ? (installed_color ? "\033[" installed_color "%15s\033[0m" : "%15s") : "%15s *";
|
||||
fmt_system = has_colors ? (system_color ? "\033[" system_color "%15s\033[0m" : "%15s") : "%15s *";
|
||||
fmt_current = has_colors ? (current_color ? "\033[" current_color "->%13s\033[0m" : "%15s") : "->%13s *";
|
||||
|
||||
latest_lts_color = current_color;
|
||||
sub(/0;/, "1;", latest_lts_color);
|
||||
|
||||
fmt_latest_lts = has_colors ? ("\033[" latest_lts_color " (Latest LTS: %s)\033[0m") : " (Latest LTS: %s)";
|
||||
fmt_old_lts = has_colors ? ("\033[" old_lts_color " (LTS: %s)\033[0m") : " (LTS: %s)";
|
||||
fmt_latest_lts = has_colors && latest_lts_color ? ("\033[" latest_lts_color " (Latest LTS: %s)\033[0m") : " (Latest LTS: %s)";
|
||||
fmt_old_lts = has_colors && old_lts_color ? ("\033[" old_lts_color " (LTS: %s)\033[0m") : " (LTS: %s)";
|
||||
|
||||
split(remote_versions, lines, "|");
|
||||
split(installed_versions, installed, "|");
|
||||
@@ -2811,38 +2824,6 @@ nvm() {
|
||||
fi
|
||||
done
|
||||
|
||||
local INITIAL_COLOR_INFO
|
||||
local RED_INFO
|
||||
local GREEN_INFO
|
||||
local BLUE_INFO
|
||||
local CYAN_INFO
|
||||
local MAGENTA_INFO
|
||||
local YELLOW_INFO
|
||||
local BLACK_INFO
|
||||
local GREY_WHITE_INFO
|
||||
|
||||
if [ -z "${NVM_NO_COLORS-}" ] && nvm_has_colors; then
|
||||
INITIAL_COLOR_INFO='\033[0;34m b\033[0m \033[0;34m y\033[0m \033[0;32m g\033[0m \033[0;31m r\033[0m \033[0;37m e\033[0m'
|
||||
RED_INFO='\033[0;31m r\033[0m/\033[1;31mR\033[0m = \033[0;31mred\033[0m / \033[1;31mbold red\033[0m'
|
||||
GREEN_INFO='\033[0;32m g\033[0m/\033[1;32mG\033[0m = \033[0;32mgreen\033[0m / \033[1;32mbold green\033[0m'
|
||||
BLUE_INFO='\033[0;34m b\033[0m/\033[1;34mB\033[0m = \033[0;34mblue\033[0m / \033[1;34mbold blue\033[0m'
|
||||
CYAN_INFO='\033[0;36m c\033[0m/\033[1;36mC\033[0m = \033[0;36mcyan\033[0m / \033[1;36mbold cyan\033[0m'
|
||||
MAGENTA_INFO='\033[0;35m m\033[0m/\033[1;35mM\033[0m = \033[0;35mmagenta\033[0m / \033[1;35mbold magenta\033[0m'
|
||||
YELLOW_INFO='\033[0;33m y\033[0m/\033[1;33mY\033[0m = \033[0;33myellow\033[0m / \033[1;33mbold yellow\033[0m'
|
||||
BLACK_INFO='\033[0;30m k\033[0m/\033[1;30mK\033[0m = \033[0;30mblack\033[0m / \033[1;30mbold black\033[0m'
|
||||
GREY_WHITE_INFO='\033[0;37m e\033[0m/\033[1;37mW\033[0m = \033[0;37mlight grey\033[0m / \033[1;37mwhite\033[0m'
|
||||
else
|
||||
INITIAL_COLOR_INFO='bygre'
|
||||
RED_INFO='r/R = red / bold red'
|
||||
GREEN_INFO='g/G = green / bold green'
|
||||
BLUE_INFO='b/B = blue / bold blue'
|
||||
CYAN_INFO='c/C = cyan / bold cyan'
|
||||
MAGENTA_INFO='m/M = magenta / bold magenta'
|
||||
YELLOW_INFO='y/Y = yellow / bold yellow'
|
||||
BLACK_INFO='k/K = black / bold black'
|
||||
GREY_WHITE_INFO='e/W = light grey / white'
|
||||
fi
|
||||
|
||||
local NVM_IOJS_PREFIX
|
||||
NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
|
||||
local NVM_NODE_PREFIX
|
||||
@@ -2919,17 +2900,16 @@ nvm() {
|
||||
nvm_echo ' nvm cache clear Empty cache directory for nvm'
|
||||
nvm_echo ' nvm set-colors [<color codes>] Set five text colors using format "yMeBg". Available when supported.'
|
||||
nvm_echo ' Initial colors are:'
|
||||
nvm_echo_with_colors " ${INITIAL_COLOR_INFO}"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code b b)$(nvm_wrap_with_color_code y y)$(nvm_wrap_with_color_code g g)$(nvm_wrap_with_color_code r r)$(nvm_wrap_with_color_code e e)"
|
||||
nvm_echo ' Color codes:'
|
||||
nvm_echo_with_colors " ${RED_INFO}"
|
||||
nvm_echo_with_colors " ${GREEN_INFO}"
|
||||
nvm_echo_with_colors " ${BLUE_INFO}"
|
||||
nvm_echo_with_colors " ${CYAN_INFO}"
|
||||
nvm_echo_with_colors " ${MAGENTA_INFO}"
|
||||
nvm_echo_with_colors " ${YELLOW_INFO}"
|
||||
nvm_echo_with_colors " ${BLACK_INFO}"
|
||||
nvm_echo_with_colors " ${GREY_WHITE_INFO}"
|
||||
nvm_echo
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code r r)/$(nvm_wrap_with_color_code R R) = $(nvm_wrap_with_color_code r red) / $(nvm_wrap_with_color_code R 'bold red')"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code g g)/$(nvm_wrap_with_color_code G G) = $(nvm_wrap_with_color_code g green) / $(nvm_wrap_with_color_code G 'bold green')"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code b b)/$(nvm_wrap_with_color_code B B) = $(nvm_wrap_with_color_code b blue) / $(nvm_wrap_with_color_code B 'bold blue')"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code c c)/$(nvm_wrap_with_color_code C C) = $(nvm_wrap_with_color_code c cyan) / $(nvm_wrap_with_color_code C 'bold cyan')"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code m m)/$(nvm_wrap_with_color_code M M) = $(nvm_wrap_with_color_code m magenta) / $(nvm_wrap_with_color_code M 'bold magenta')"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code y y)/$(nvm_wrap_with_color_code Y Y) = $(nvm_wrap_with_color_code y yellow) / $(nvm_wrap_with_color_code Y 'bold yellow')"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code k k)/$(nvm_wrap_with_color_code K K) = $(nvm_wrap_with_color_code k black) / $(nvm_wrap_with_color_code K 'bold black')"
|
||||
nvm_echo_with_colors " $(nvm_wrap_with_color_code e e)/$(nvm_wrap_with_color_code W W) = $(nvm_wrap_with_color_code e 'light grey') / $(nvm_wrap_with_color_code W white)"
|
||||
nvm_echo 'Example:'
|
||||
nvm_echo ' nvm install 8.0.0 Install a specific version number'
|
||||
nvm_echo ' nvm use 8.0 Use the latest available 8.0.x release'
|
||||
@@ -4219,7 +4199,7 @@ nvm() {
|
||||
nvm_node_version_has_solaris_binary nvm_iojs_version_has_solaris_binary \
|
||||
nvm_curl_libz_support nvm_command_info nvm_is_zsh nvm_stdout_is_terminal \
|
||||
nvm_npmrc_bad_news_bears \
|
||||
nvm_get_colors nvm_set_colors nvm_print_color_code nvm_format_help_message_colors \
|
||||
nvm_get_colors nvm_set_colors nvm_print_color_code nvm_wrap_with_color_code nvm_format_help_message_colors \
|
||||
nvm_echo_with_colors nvm_err_with_colors \
|
||||
nvm_get_artifact_compression nvm_install_binary_extract nvm_extract_tarball \
|
||||
>/dev/null 2>&1
|
||||
|
||||
Reference in New Issue
Block a user