mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-10-31 01:45:50 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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="$1"
 | |
|   local version="$2"
 | |
|   local archi="$os-$3"
 | |
|   local node="$4"
 | |
|   local ext="$5"
 | |
|   local command="$6"
 | |
|   local command_option="$7"
 | |
|   local node_path="$tmp_dir/node-$version-$archi/$node"
 | |
| 
 | |
|   # Create tarball
 | |
|   mkdir -p "$(dirname "$node_path")"
 | |
|   echo "node $version" > "$node_path"
 | |
|   (cd "$tmp_dir" && "$command" "$command_option" "$tmp_dir/node-$version-$archi.$ext" "node-$version-$archi" && rm -rf "$tmp_dir/node-$version-$archi")
 | |
|   [ -f "$tmp_dir/node-$version-$archi.$ext" ] || die "Unable to create fake $ext file"
 | |
| 
 | |
|   # Extract it
 | |
|   nvm_install_binary_extract "$os" "$version" "${version:1}" "$tmp_dir/node-$version-$archi.$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
 | |
| 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
 |