mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-11-04 13:21:29 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
cleanup() {
 | 
						|
  [ -d "${tmp_dir}" ] && rm -rf "${tmp_dir}"
 | 
						|
  [ -d "${NVM_DIR}" ] && rm -rf "${NVM_DIR}"
 | 
						|
  unset -f die cleanup test_archi nvm_supports_xz
 | 
						|
  unset NVM_DIR tmp_dir version archi
 | 
						|
}
 | 
						|
 | 
						|
die() { echo "$@" ; cleanup ; exit 1; }
 | 
						|
 | 
						|
test_archi() {
 | 
						|
  local os
 | 
						|
  os="$1"
 | 
						|
  local version
 | 
						|
  version="$2"
 | 
						|
  local archi
 | 
						|
  archi="$os-$3"
 | 
						|
  local node
 | 
						|
  node="$4"
 | 
						|
  local ext
 | 
						|
  ext="$5"
 | 
						|
  local command
 | 
						|
  command="$6"
 | 
						|
  local command_option
 | 
						|
  command_option="$7"
 | 
						|
  local node_dir
 | 
						|
  node_dir="${tmp_dir}/node-${version}-${archi}"
 | 
						|
  local node_path
 | 
						|
  node_path="${node_dir}/${node}"
 | 
						|
 | 
						|
  # Create tarball
 | 
						|
  mkdir -p "$(dirname "${node_path}")"
 | 
						|
  echo "node ${version}" > "${node_path}"
 | 
						|
  (cd "${tmp_dir}" && "${command}" "${command_option}" "${node_dir}.${ext}" "node-${version}-${archi}")
 | 
						|
  [ -f "${node_dir}.${ext}" ] || die "Unable to create fake ${ext} file"
 | 
						|
 | 
						|
  # Extract it
 | 
						|
  nvm_install_binary_extract "$os" "$version" "$(expr "${version}" : '.\(.*\)')" "${node_dir}.$ext" "${tmp_dir}/files"
 | 
						|
  [ "$(cat "${NVM_DIR}/versions/node/${version}/bin/node")" = "node ${version}" ] || die "Unable to extract ${ext} file"
 | 
						|
}
 | 
						|
 | 
						|
\. ../../../nvm.sh
 | 
						|
 | 
						|
set -ex
 | 
						|
 | 
						|
# nvm_install_binary_extract is available
 | 
						|
type nvm_install_binary_extract > /dev/null 2>&1 || die 'nvm_install_binary_extract is not available'
 | 
						|
 | 
						|
NVM_DIR=$(mktemp -d)
 | 
						|
tmp_dir=$(mktemp -d)
 | 
						|
if [ -z "${NVM_DIR}" ] || [ -z "${tmp_dir}" ]; then
 | 
						|
  die 'Unable to create temporary folder'
 | 
						|
fi
 | 
						|
 | 
						|
# Test windows zip
 | 
						|
# TODO: enable this
 | 
						|
# test_archi 'win' 'v15.6.0' 'x64' 'node' 'zip' 'zip' '-qr'
 | 
						|
 | 
						|
# Test linux tar.xz
 | 
						|
test_archi 'linux' 'v14.15.4' 'x64' 'bin/node' 'tar.xz' 'tar' '-cJf'
 | 
						|
 | 
						|
nvm_supports_xz() {
 | 
						|
  return 1
 | 
						|
}
 | 
						|
 | 
						|
# Test linux tar.gz
 | 
						|
test_archi 'linux' 'v12.9.0' 'x64' 'bin/node' 'tar.gz' 'tar' '-czf'
 | 
						|
 | 
						|
cleanup
 |