mirror of
https://github.com/nvm-sh/nvm.git
synced 2025-10-26 04:10:36 +08:00
[Refactor] add nvm_install_binary_extract
This commit is contained in:
committed by
Jordan Harband
parent
d396181ffb
commit
7f6c0c053a
76
nvm.sh
76
nvm.sh
@@ -1858,6 +1858,53 @@ nvm_get_mirror() {
|
||||
esac
|
||||
}
|
||||
|
||||
# args: os, prefixed version, version, tarball, extract directory
|
||||
nvm_install_binary_extract() {
|
||||
if [ "$#" -ne 5 ]; then
|
||||
nvm_err 'nvm_install_binary_extract needs 5 parameters'
|
||||
return 1
|
||||
fi
|
||||
|
||||
local NVM_OS
|
||||
local PREFIXED_VERSION
|
||||
local VERSION
|
||||
local TARBALL
|
||||
local TMPDIR
|
||||
NVM_OS="${1}"
|
||||
PREFIXED_VERSION="${2}"
|
||||
VERSION="${3}"
|
||||
TARBALL="${4}"
|
||||
TMPDIR="${5}"
|
||||
|
||||
local VERSION_PATH
|
||||
|
||||
[ -n "${TMPDIR-}" ] && \
|
||||
command mkdir -p "${TMPDIR}" && \
|
||||
VERSION_PATH="$(nvm_version_path "${PREFIXED_VERSION}")" || return 1
|
||||
|
||||
local tar_compression_flag
|
||||
tar_compression_flag='z'
|
||||
if nvm_supports_xz "${VERSION}"; then
|
||||
tar_compression_flag='J'
|
||||
fi
|
||||
|
||||
local tar
|
||||
if [ "${NVM_OS}" = 'aix' ]; then
|
||||
tar='gtar'
|
||||
else
|
||||
tar='tar'
|
||||
fi
|
||||
command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 || return 1
|
||||
|
||||
command mkdir -p "${VERSION_PATH}" || return 1
|
||||
|
||||
command mv "${TMPDIR}/"* "${VERSION_PATH}" || return 1
|
||||
|
||||
command rm -rf "${TMPDIR}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# args: flavor, type, version, reinstall
|
||||
nvm_install_binary() {
|
||||
local FLAVOR
|
||||
@@ -1882,19 +1929,15 @@ nvm_install_binary() {
|
||||
local VERSION
|
||||
VERSION="$(nvm_strip_iojs_prefix "${PREFIXED_VERSION}")"
|
||||
|
||||
if [ -z "$(nvm_get_os)" ]; then
|
||||
return 2
|
||||
fi
|
||||
local NVM_OS
|
||||
NVM_OS="$(nvm_get_os)"
|
||||
|
||||
local tar_compression_flag
|
||||
tar_compression_flag='z'
|
||||
if nvm_supports_xz "${VERSION}"; then
|
||||
tar_compression_flag='J'
|
||||
if [ -z "${NVM_OS}" ]; then
|
||||
return 2
|
||||
fi
|
||||
|
||||
local TARBALL
|
||||
local TMPDIR
|
||||
local VERSION_PATH
|
||||
|
||||
local PROGRESS_BAR
|
||||
local NODE_OR_IOJS
|
||||
@@ -1914,21 +1957,8 @@ nvm_install_binary() {
|
||||
if [ -f "${TARBALL}" ]; then
|
||||
TMPDIR="$(dirname "${TARBALL}")/files"
|
||||
fi
|
||||
local tar
|
||||
tar='tar'
|
||||
if [ "${NVM_OS}" = 'aix' ]; then
|
||||
tar='gtar'
|
||||
fi
|
||||
if (
|
||||
[ -n "${TMPDIR-}" ] && \
|
||||
command mkdir -p "${TMPDIR}" && \
|
||||
command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 && \
|
||||
VERSION_PATH="$(nvm_version_path "${PREFIXED_VERSION}")" && \
|
||||
command mkdir -p "${VERSION_PATH}" && \
|
||||
command mv "${TMPDIR}/"* "${VERSION_PATH}" && \
|
||||
command rm -rf "${TMPDIR}"
|
||||
); then
|
||||
|
||||
if nvm_install_binary_extract "${NVM_OS}" "${PREFIXED_VERSION}" "${VERSION}" "${TARBALL}" "${TMPDIR}"; then
|
||||
if [ -n "${ALIAS-}" ]; then
|
||||
nvm alias "${ALIAS}" "${provided_version}"
|
||||
fi
|
||||
@@ -3957,7 +3987,7 @@ nvm() {
|
||||
nvm_npmrc_bad_news_bears \
|
||||
nvm_get_colors nvm_set_colors nvm_print_color_code nvm_format_help_message_colors \
|
||||
nvm_echo_with_colors nvm_err_with_colors \
|
||||
nvm_get_artifact_compression \
|
||||
nvm_get_artifact_compression nvm_install_binary_extract \
|
||||
>/dev/null 2>&1
|
||||
unset NVM_RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_IOJS_ORG_MIRROR NVM_DIR \
|
||||
NVM_CD_FLAGS NVM_BIN NVM_INC NVM_MAKE_JOBS \
|
||||
|
||||
Reference in New Issue
Block a user