@@ -1858,6 +1858,53 @@ nvm_get_mirror() {
18581858 esac
18591859}
18601860
1861+ # args: os, prefixed version, version, tarball, extract directory
1862+ nvm_install_binary_extract () {
1863+ if [ " $# " -ne 5 ]; then
1864+ nvm_err ' nvm_install_binary_extract needs 5 parameters'
1865+ return 1
1866+ fi
1867+
1868+ local NVM_OS
1869+ local PREFIXED_VERSION
1870+ local VERSION
1871+ local TARBALL
1872+ local TMPDIR
1873+ NVM_OS=" ${1} "
1874+ PREFIXED_VERSION=" ${2} "
1875+ VERSION=" ${3} "
1876+ TARBALL=" ${4} "
1877+ TMPDIR=" ${5} "
1878+
1879+ local VERSION_PATH
1880+
1881+ [ -n " ${TMPDIR-} " ] && \
1882+ command mkdir -p " ${TMPDIR} " && \
1883+ VERSION_PATH=" $( nvm_version_path " ${PREFIXED_VERSION} " ) " || return 1
1884+
1885+ local tar_compression_flag
1886+ tar_compression_flag=' z'
1887+ if nvm_supports_xz " ${VERSION} " ; then
1888+ tar_compression_flag=' J'
1889+ fi
1890+
1891+ local tar
1892+ if [ " ${NVM_OS} " = ' aix' ]; then
1893+ tar=' gtar'
1894+ else
1895+ tar=' tar'
1896+ fi
1897+ command " ${tar} " -x${tar_compression_flag} f " ${TARBALL} " -C " ${TMPDIR} " --strip-components 1 || return 1
1898+
1899+ command mkdir -p " ${VERSION_PATH} " || return 1
1900+
1901+ command mv " ${TMPDIR} /" * " ${VERSION_PATH} " || return 1
1902+
1903+ command rm -rf " ${TMPDIR} "
1904+
1905+ return 0
1906+ }
1907+
18611908# args: flavor, type, version, reinstall
18621909nvm_install_binary () {
18631910 local FLAVOR
@@ -1882,19 +1929,15 @@ nvm_install_binary() {
18821929 local VERSION
18831930 VERSION=" $( nvm_strip_iojs_prefix " ${PREFIXED_VERSION} " ) "
18841931
1885- if [ -z " $( nvm_get_os) " ]; then
1886- return 2
1887- fi
1932+ local NVM_OS
1933+ NVM_OS=" $( nvm_get_os) "
18881934
1889- local tar_compression_flag
1890- tar_compression_flag=' z'
1891- if nvm_supports_xz " ${VERSION} " ; then
1892- tar_compression_flag=' J'
1935+ if [ -z " ${NVM_OS} " ]; then
1936+ return 2
18931937 fi
18941938
18951939 local TARBALL
18961940 local TMPDIR
1897- local VERSION_PATH
18981941
18991942 local PROGRESS_BAR
19001943 local NODE_OR_IOJS
@@ -1914,21 +1957,8 @@ nvm_install_binary() {
19141957 if [ -f " ${TARBALL} " ]; then
19151958 TMPDIR=" $( dirname " ${TARBALL} " ) /files"
19161959 fi
1917- local tar
1918- tar=' tar'
1919- if [ " ${NVM_OS} " = ' aix' ]; then
1920- tar=' gtar'
1921- fi
1922- if (
1923- [ -n " ${TMPDIR-} " ] && \
1924- command mkdir -p " ${TMPDIR} " && \
1925- command " ${tar} " -x${tar_compression_flag} f " ${TARBALL} " -C " ${TMPDIR} " --strip-components 1 && \
1926- VERSION_PATH=" $( nvm_version_path " ${PREFIXED_VERSION} " ) " && \
1927- command mkdir -p " ${VERSION_PATH} " && \
1928- command mv " ${TMPDIR} /" * " ${VERSION_PATH} " && \
1929- command rm -rf " ${TMPDIR} "
1930- ); then
19311960
1961+ if nvm_install_binary_extract " ${NVM_OS} " " ${PREFIXED_VERSION} " " ${VERSION} " " ${TARBALL} " " ${TMPDIR} " ; then
19321962 if [ -n " ${ALIAS-} " ]; then
19331963 nvm alias " ${ALIAS} " " ${provided_version} "
19341964 fi
@@ -3957,7 +3987,7 @@ nvm() {
39573987 nvm_npmrc_bad_news_bears \
39583988 nvm_get_colors nvm_set_colors nvm_print_color_code nvm_format_help_message_colors \
39593989 nvm_echo_with_colors nvm_err_with_colors \
3960- nvm_get_artifact_compression \
3990+ nvm_get_artifact_compression nvm_install_binary_extract \
39613991 > /dev/null 2>&1
39623992 unset NVM_RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_IOJS_ORG_MIRROR NVM_DIR \
39633993 NVM_CD_FLAGS NVM_BIN NVM_INC NVM_MAKE_JOBS \
0 commit comments