Skip to content
This repository has been archived by the owner on Dec 24, 2018. It is now read-only.

Commit

Permalink
Merge pull request #41 from fengmk2/support-arch
Browse files Browse the repository at this point in the history
support install with OS_ARCH
  • Loading branch information
hakobera committed Feb 14, 2015
2 parents 49fe7de + cb9e94e commit 7d46af9
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 26 deletions.
3 changes: 2 additions & 1 deletion .gitignore
@@ -1,3 +1,4 @@
v*/
.idea/
.DS_Store
.DS_Store
node_modules
13 changes: 12 additions & 1 deletion README.md
Expand Up @@ -38,7 +38,18 @@ Usage
nvmw install iojs-v1.0.2 Install a specific version number of io.js
nvmw use iojs-v1.0.2 Use the specific version of io.js

nvmw install v0.10.35 x86 Install a 32-bit version
### Support install with arch

arch support values: `x86`, `x64`

Usage:
nvmw install [version] [arch] Download and install a [version] on the [arch]
nvmw uninstall [version] [arch] Uninstall a [version] on the [arch]
nvmw use [version] [arch] Modify PATH to use [version] on the [arch]

Example:
nvmw install v0.12.0 x86 Install a specific 32-bit version
nvmw use v0.12.0 x86 Use the specific 32-bit version

Mirror node.js/io.js/npm dist
------------------
Expand Down
130 changes: 106 additions & 24 deletions nvmw.bat
Expand Up @@ -9,14 +9,14 @@ if not defined PATH_ORG (
)

set IS64=FALSE
if exist "%PROGRAMFILES(X86)%" if not "%3" == "x86" (
if exist "%PROGRAMFILES(X86)%" (
set IS64=TRUE
)

if %IS64% == TRUE (
set OS_ARCH=64
set OS_ARCH=x64
) else (
set OS_ARCH=32
set OS_ARCH=x32
)

if not defined NVMW_NODEJS_ORG_MIRROR (
Expand All @@ -28,13 +28,13 @@ if not defined NVMW_IOJS_ORG_MIRROR (
)

if "%1" == "install" if not "%2" == "" (
call :install %2
if not ERRORLEVEL == 1 call :use %2
call :install %2 %3
if not ERRORLEVEL == 1 call :use %2 %3
exit /b %ERRORLEVEL%
)

if "%1" == "use" if not "%2" == "" (
call :use %2
call :use %2 %3
exit /b %ERRORLEVEL%
)

Expand All @@ -44,7 +44,7 @@ if "%1" == "ls" (
)

if "%1" == "uninstall" if not "%2" == "" (
call :uninstall %2
call :uninstall %2 %3
exit /b %ERRORLEVEL%
)

Expand Down Expand Up @@ -82,6 +82,19 @@ exit /b 0
:install
setlocal

set ARCH=%OS_ARCH%

if not "%2" == "" (
set ARCH=%2
:: x86, ia32 alias x32
if "%2" == "x86" (
set ARCH=x32
)
if "%2" == "ia32" (
set ARCH=x32
)
)

set NODE_TYPE=node
set NODE_VERSION=%1

Expand Down Expand Up @@ -112,13 +125,13 @@ if not %NODE_VERSION:~0,1% == v if not %NODE_VERSION:~0,1% == l (

if %NODE_TYPE% == iojs (
set DIST_URL=%%
if %OS_ARCH% == 32 (
if %ARCH% == x32 (
set NODE_EXE_URL=%NVMW_IOJS_ORG_MIRROR%/%NODE_VERSION%/win-x86/iojs.exe
) else (
set NODE_EXE_URL=%NVMW_IOJS_ORG_MIRROR%/%NODE_VERSION%/win-x64/iojs.exe
)
) else (
if %OS_ARCH% == 32 (
if %ARCH% == x32 (
set NODE_EXE_URL=%NVMW_NODEJS_ORG_MIRROR%/%NODE_VERSION%/node.exe
) else (
set NODE_EXE_URL=%NVMW_NODEJS_ORG_MIRROR%/%NODE_VERSION%/x64/node.exe
Expand All @@ -129,17 +142,26 @@ set "NODE_HOME=%NVMW_HOME%%NODE_VERSION%"
if %NODE_TYPE% == iojs (
set "NODE_HOME=%NVMW_HOME%%NODE_TYPE%\%NODE_VERSION%"
)
mkdir "%NODE_HOME%"

echo Start installing %NODE_TYPE%/%NODE_VERSION% (x%OS_ARCH%) to %NODE_HOME%
if not %ARCH% == %OS_ARCH% (
set "NODE_HOME=%NODE_HOME%-%ARCH%"
)

set "NODE_EXE_FILE=%NODE_HOME%\%NODE_TYPE%.exe"
set "NPM_ZIP_FILE=%NODE_HOME%\npm.zip"

if not exist "%NODE_EXE_FILE%" (
cscript //nologo "%NVMW_HOME%\fget.js" %NODE_EXE_URL% "%NODE_EXE_FILE%"
if exist "%NODE_EXE_FILE%" (
endlocal
echo "%NODE_TYPE%/%NODE_VERSION% (%ARCH%)" already exists, please uninstall it first
exit /b 1
)

mkdir "%NODE_HOME%"

echo Start installing %NODE_TYPE%/%NODE_VERSION% (%ARCH%) to %NODE_HOME%

cscript //nologo "%NVMW_HOME%\fget.js" %NODE_EXE_URL% "%NODE_EXE_FILE%"

if not exist "%NODE_EXE_FILE%" (
echo Download %NODE_EXE_FILE% from %NODE_EXE_URL% failed
goto install_error
Expand All @@ -156,8 +178,10 @@ if not exist "%NODE_EXE_FILE%" (
set "CD_ORG=%CD%"
%~d0
cd "%NODE_HOME%"
echo Start unzip "%NPM_ZIP_FILE%" to "%NODE_HOME%"
cscript //nologo "%NVMW_HOME%\unzip.js" "%NPM_ZIP_FILE%" "%NODE_HOME%"
mkdir "%NODE_HOME%\node_modules"
rmdir /s /q "%NODE_HOME%\node_modules\npm"
move npm-* "%NODE_HOME%\node_modules\npm"
copy "%NODE_HOME%\node_modules\npm\bin\npm.cmd" "%NODE_HOME%\npm.cmd"
cd "%CD_ORG%"
Expand All @@ -179,6 +203,19 @@ if not exist "%NODE_EXE_FILE%" (
:uninstall
setlocal

set ARCH=%OS_ARCH%

if not "%2" == "" (
set ARCH=%2
:: x86, ia32 alias x32
if "%2" == "x86" (
set ARCH=x32
)
if "%2" == "ia32" (
set ARCH=x32
)
)

set NODE_TYPE=node
set NODE_VERSION=%1

Expand All @@ -205,8 +242,8 @@ if not %NODE_VERSION:~0,1% == v if not %NODE_VERSION:~0,1% == l (
set NODE_VERSION=v%NODE_VERSION%
)

if "%NVMW_CURRENT%" == "%NODE_VERSION%" (
echo Cannot uninstall currently-active %NODE_TYPE%/%NODE_VERSION%
if "%NVMW_CURRENT_TYPE%" == "%NODE_TYPE%" if "%NVMW_CURRENT%" == "%NODE_VERSION%" if "%NVMW_CURRENT_ARCH%" == "%ARCH%" (
echo Cannot uninstall currently-active %NODE_TYPE%/%NODE_VERSION% %ARCH%
exit /b 1
)

Expand All @@ -215,16 +252,20 @@ if %NODE_TYPE% == iojs (
set "NODE_HOME=%NVMW_HOME%%NODE_TYPE%\%NODE_VERSION%"
)

if not %ARCH% == %OS_ARCH% (
set "NODE_HOME=%NODE_HOME%-%ARCH%"
)

if not exist "%NODE_HOME%" (
echo %NODE_TYPE%/%NODE_VERSION% is not installed
echo %NODE_TYPE%/%NODE_VERSION% %ARCH% is not installed
exit /b 1
) else (
rd /Q /S "%NODE_HOME%"
if ERRORLEVEL == 1 (
echo Cannot uninstall %NODE_TYPE%/%NODE_VERSION%
echo Cannot uninstall %NODE_TYPE%/%NODE_VERSION% %ARCH%
exit /b 1
) else (
echo Uninstalled %NODE_TYPE%/%NODE_VERSION%
echo Uninstalled %NODE_TYPE%/%NODE_VERSION% %ARCH%
endlocal
exit /b 0
)
Expand All @@ -236,6 +277,19 @@ if not exist "%NODE_HOME%" (
:use
setlocal

set ARCH=%OS_ARCH%

if not "%2" == "" (
set ARCH=%2
:: x86, ia32 alias x32
if "%2" == "x86" (
set ARCH=x32
)
if "%2" == "ia32" (
set ARCH=x32
)
)

set NODE_TYPE=node
set NODE_VERSION=%1

Expand Down Expand Up @@ -267,13 +321,29 @@ if %NODE_TYPE% == iojs (
set "NODE_HOME=%NVMW_HOME%%NODE_TYPE%\%NODE_VERSION%"
)

if not %ARCH% == %OS_ARCH% (
set "NODE_HOME=%NODE_HOME%-%ARCH%"
)

if not exist "%NODE_HOME%" (
echo %NODE_TYPE%/%NODE_VERSION% is not installed
exit /b 1
)

endlocal

set NVMW_CURRENT_ARCH=%OS_ARCH%
if not "%2" == "" (
set NVMW_CURRENT_ARCH=%2
:: x86, ia32 alias x32
if "%2" == "x86" (
set NVMW_CURRENT_ARCH=x32
)
if "%2" == "ia32" (
set NVMW_CURRENT_ARCH=x32
)
)

set NVMW_CURRENT_TYPE=node
set NVMW_CURRENT=%1
if "%NVMW_CURRENT:~4,1%" == "-" (
Expand All @@ -296,14 +366,26 @@ if %NVMW_CURRENT% == node (
if not %NVMW_CURRENT:~0,1% == v if not %NVMW_CURRENT:~0,1% == l (
set NVMW_CURRENT=v%NVMW_CURRENT%
)
echo Now using %NVMW_CURRENT_TYPE% %NVMW_CURRENT%

echo Now using %NVMW_CURRENT_TYPE% %NVMW_CURRENT% %NVMW_CURRENT_ARCH%

set "NODE_HOME=%NVMW_HOME%%NODE_VERSION%"
if %NVMW_CURRENT_TYPE% == iojs (
set "NODE_HOME=%NVMW_HOME%%NODE_TYPE%\%NODE_VERSION%"
)

if not %NVMW_CURRENT_ARCH% == %OS_ARCH% (
set NVMW_CURRENT_ARCH_PADDING=-%NVMW_CURRENT_ARCH%
) else (
set NVMW_CURRENT_ARCH_PADDING=
)

if %NVMW_CURRENT_TYPE% == iojs (
set "PATH=%NVMW_HOME%;%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%;%PATH_ORG%"
set "NODE_PATH=%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%\node_modules"
set "PATH=%NVMW_HOME%;%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%;%PATH_ORG%"
set "NODE_PATH=%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%\node_modules"
) else (
set "PATH=%NVMW_HOME%;%NVMW_HOME%\%NVMW_CURRENT%;%PATH_ORG%"
set "NODE_PATH=%NVMW_HOME%\%NVMW_CURRENT%\node_modules"
set "PATH=%NVMW_HOME%;%NVMW_HOME%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%;%PATH_ORG%"
set "NODE_PATH=%NVMW_HOME%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%\node_modules"
)

exit /b 0
Expand All @@ -330,6 +412,6 @@ if not defined NVMW_CURRENT (
) else (
set NVMW_CURRENT_V=%NVMW_CURRENT%
)
echo Current: %NVMW_CURRENT_TYPE%/%NVMW_CURRENT_V%
echo Current: %NVMW_CURRENT_TYPE%/%NVMW_CURRENT_V% %NVMW_CURRENT_ARCH%
endlocal
exit /b 0

0 comments on commit 7d46af9

Please sign in to comment.