From e0ee5556c16c17f44132b359fafb69ca35226108 Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Wed, 18 Feb 2015 23:37:23 -0500 Subject: [PATCH 1/8] persist choice into System Path --- nvmw.bat | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/nvmw.bat b/nvmw.bat index 042c62c..aaaeb75 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -380,14 +380,36 @@ if not %NVMW_CURRENT_ARCH% == %OS_ARCH% ( set NVMW_CURRENT_ARCH_PADDING= ) +setlocal EnableDelayedExpansion +::Changing special characters +set LINE=%PATH_ORG% +set LINE=%LINE: =#% +set LINE=%LINE:(=@% +set LINE=%LINE:)=$% +set LINE=%LINE:;= % +::Removing any path referencing '.nvmw' +for %%a in (%LINE%) do echo %%a | find /i "nvmw_fork" || set NEWPATH=!NEWPATH!;%%a +::Changing back special characters +set NEWPATH=!NEWPATH:#= ! +set NEWPATH=!NEWPATH:@=(! +set NEWPATH=!NEWPATH:$=)! +::Setting back to PATH_ORG +set PATH_ORG=!NEWPATH:~1!; + +set "PATH_IOJS=%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%" +set "PATH_NODE=%NVMW_HOME%%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%" + if %NVMW_CURRENT_TYPE% == iojs ( - 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" + set "PATH_TO_SET=%NVMW_HOME%;%PATH_IOJS%" ) else ( - 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" -) - + set "PATH_TO_SET=%NVMW_HOME%;%PATH_NODE%" +) +::Set for the current session +set "PATH=%PATH_TO_SET%;%PATH_ORG%" +set "NODE_PATH=%PATH_TO_SET%\node_modules" +::Set for all future sessions +setx PATH "%PATH_TO_SET%;%PATH_ORG%" /M +setx NODE_PATH "%PATH_TO_SET%\node_modules" /M exit /b 0 ::=========================================================== From 3b24f809478e879ba907e2bb8785fbfd71ae2ece Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Wed, 18 Feb 2015 23:56:22 -0500 Subject: [PATCH 2/8] hide setx output --- nvmw.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nvmw.bat b/nvmw.bat index aaaeb75..91b71a3 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -408,8 +408,8 @@ if %NVMW_CURRENT_TYPE% == iojs ( set "PATH=%PATH_TO_SET%;%PATH_ORG%" set "NODE_PATH=%PATH_TO_SET%\node_modules" ::Set for all future sessions -setx PATH "%PATH_TO_SET%;%PATH_ORG%" /M -setx NODE_PATH "%PATH_TO_SET%\node_modules" /M +setx PATH "%PATH_TO_SET%;%PATH_ORG%" /M>NUL +setx NODE_PATH "%PATH_TO_SET%\node_modules" /M>NUL exit /b 0 ::=========================================================== From 614adb9c35d65e4f77fccf453ec8fa08d4bf7259 Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Fri, 20 Feb 2015 00:13:55 -0500 Subject: [PATCH 3/8] change path back to '.nvmw' --- nvmw.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nvmw.bat b/nvmw.bat index 91b71a3..63ebea7 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -388,7 +388,7 @@ set LINE=%LINE:(=@% set LINE=%LINE:)=$% set LINE=%LINE:;= % ::Removing any path referencing '.nvmw' -for %%a in (%LINE%) do echo %%a | find /i "nvmw_fork" || set NEWPATH=!NEWPATH!;%%a +for %%a in (%LINE%) do echo %%a | find /i ".nvmw" || set NEWPATH=!NEWPATH!;%%a ::Changing back special characters set NEWPATH=!NEWPATH:#= ! set NEWPATH=!NEWPATH:@=(! From 9e66bfcd22945ff8368a2f11fd39fac81aafbc52 Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Fri, 20 Feb 2015 00:15:26 -0500 Subject: [PATCH 4/8] remove quotes for consistency --- nvmw.bat | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/nvmw.bat b/nvmw.bat index 63ebea7..270a4ee 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -396,20 +396,19 @@ set NEWPATH=!NEWPATH:$=)! ::Setting back to PATH_ORG set PATH_ORG=!NEWPATH:~1!; -set "PATH_IOJS=%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%" -set "PATH_NODE=%NVMW_HOME%%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING%" +set PATH_IOJS=%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING% +set PATH_NODE=%NVMW_HOME%%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING% if %NVMW_CURRENT_TYPE% == iojs ( - set "PATH_TO_SET=%NVMW_HOME%;%PATH_IOJS%" + set PATH_TO_SET=%NVMW_HOME%;%PATH_IOJS% ) else ( - set "PATH_TO_SET=%NVMW_HOME%;%PATH_NODE%" + set PATH_TO_SET=%NVMW_HOME%;%PATH_NODE% ) -::Set for the current session -set "PATH=%PATH_TO_SET%;%PATH_ORG%" -set "NODE_PATH=%PATH_TO_SET%\node_modules" ::Set for all future sessions setx PATH "%PATH_TO_SET%;%PATH_ORG%" /M>NUL setx NODE_PATH "%PATH_TO_SET%\node_modules" /M>NUL +::Set for the current session +endlocal & set PATH=%PATH_TO_SET%;%PATH_ORG% & set NODE_PATH=%NODE_PATH_TO_SET% exit /b 0 ::=========================================================== From 9f1b68b4271783846653f12b917f7401df01db8a Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Fri, 20 Feb 2015 00:16:00 -0500 Subject: [PATCH 5/8] use variable for NODE_PATH --- nvmw.bat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nvmw.bat b/nvmw.bat index 270a4ee..2269253 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -401,12 +401,14 @@ set PATH_NODE=%NVMW_HOME%%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING% if %NVMW_CURRENT_TYPE% == iojs ( set PATH_TO_SET=%NVMW_HOME%;%PATH_IOJS% + set NODE_PATH_TO_SET=%PATH_IOJS%\node_modules ) else ( set PATH_TO_SET=%NVMW_HOME%;%PATH_NODE% + set NODE_PATH_TO_SET=%PATH_NODE%\node_modules ) ::Set for all future sessions setx PATH "%PATH_TO_SET%;%PATH_ORG%" /M>NUL -setx NODE_PATH "%PATH_TO_SET%\node_modules" /M>NUL +setx NODE_PATH "%NODE_PATH_TO_SET%" /M>NUL ::Set for the current session endlocal & set PATH=%PATH_TO_SET%;%PATH_ORG% & set NODE_PATH=%NODE_PATH_TO_SET% exit /b 0 From 8e740120252b8788d462eee4320452f8259e3924 Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Fri, 20 Feb 2015 00:16:16 -0500 Subject: [PATCH 6/8] echo more information on what is done --- nvmw.bat | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nvmw.bat b/nvmw.bat index 2269253..3b94be1 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -388,6 +388,7 @@ set LINE=%LINE:(=@% set LINE=%LINE:)=$% set LINE=%LINE:;= % ::Removing any path referencing '.nvmw' +echo Removing from System Path : for %%a in (%LINE%) do echo %%a | find /i ".nvmw" || set NEWPATH=!NEWPATH!;%%a ::Changing back special characters set NEWPATH=!NEWPATH:#= ! @@ -409,6 +410,12 @@ if %NVMW_CURRENT_TYPE% == iojs ( ::Set for all future sessions setx PATH "%PATH_TO_SET%;%PATH_ORG%" /M>NUL setx NODE_PATH "%NODE_PATH_TO_SET%" /M>NUL +::Echo what we're setting back +echo Adding to System Path :^ + +!PATH_TO_SET:;=^ + +! ::Set for the current session endlocal & set PATH=%PATH_TO_SET%;%PATH_ORG% & set NODE_PATH=%NODE_PATH_TO_SET% exit /b 0 From 65b36f18c94446bd1e7bf7feca170dc892b6098a Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Sat, 21 Feb 2015 02:02:40 -0500 Subject: [PATCH 7/8] persist choice into user path instead of system path --- nvmw.bat | 65 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/nvmw.bat b/nvmw.bat index 3b94be1..859b1c7 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -381,6 +381,39 @@ if not %NVMW_CURRENT_ARCH% == %OS_ARCH% ( ) setlocal EnableDelayedExpansion +::Set reference paths +set PATH_IOJS=%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING% +set PATH_NODE=%NVMW_HOME%%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING% +if %NVMW_CURRENT_TYPE% == iojs ( + set PATH_TO_SET=%NVMW_HOME%;%PATH_IOJS% + set NODE_PATH_TO_SET=%PATH_IOJS%\node_modules +) else ( + set PATH_TO_SET=%NVMW_HOME%;%PATH_NODE% + set NODE_PATH_TO_SET=%PATH_NODE%\node_modules +) +set PATH_ORG= +::Check if PATH key exists in User Path and set it in PATH_ORG +reg query HKCU\Environment /v PATH>NUL 2>NUL +if %errorlevel% == 0 ( + for /f "usebackq tokens=2,*" %%A in (`reg query HKCU\Environment /v PATH`) do set PATH_ORG=%%B +) +::Clean User Path +set RETURN=setUserPath +goto cleanPath +:setUserPath +::Set for all future sessions +setx PATH "%PATH_TO_SET%;%PATH_ORG%">NUL +setx NODE_PATH "%NODE_PATH_TO_SET%">NUL +::Clean System Path +set PATH_ORG=%PATH% +set RETURN=setPath +goto cleanPath +:setPath +::Set for the current session +endlocal & set PATH=%PATH_TO_SET%;%PATH_ORG%& set NODE_PATH=%NODE_PATH_TO_SET% +exit /b 0 + +:cleanPath ::Changing special characters set LINE=%PATH_ORG% set LINE=%LINE: =#% @@ -388,37 +421,19 @@ set LINE=%LINE:(=@% set LINE=%LINE:)=$% set LINE=%LINE:;= % ::Removing any path referencing '.nvmw' -echo Removing from System Path : -for %%a in (%LINE%) do echo %%a | find /i ".nvmw" || set NEWPATH=!NEWPATH!;%%a +for %%a in (%LINE%) do echo %%a | find /i ".nvmw">NUL || set NEWPATH=!NEWPATH!;%%a +::If empty we return empty +if [!NEWPATH!] == [] ( + set PATH_ORG= + goto %RETURN% +) ::Changing back special characters set NEWPATH=!NEWPATH:#= ! set NEWPATH=!NEWPATH:@=(! set NEWPATH=!NEWPATH:$=)! ::Setting back to PATH_ORG set PATH_ORG=!NEWPATH:~1!; - -set PATH_IOJS=%NVMW_HOME%%NVMW_CURRENT_TYPE%\%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING% -set PATH_NODE=%NVMW_HOME%%NVMW_CURRENT%%NVMW_CURRENT_ARCH_PADDING% - -if %NVMW_CURRENT_TYPE% == iojs ( - set PATH_TO_SET=%NVMW_HOME%;%PATH_IOJS% - set NODE_PATH_TO_SET=%PATH_IOJS%\node_modules -) else ( - set PATH_TO_SET=%NVMW_HOME%;%PATH_NODE% - set NODE_PATH_TO_SET=%PATH_NODE%\node_modules -) -::Set for all future sessions -setx PATH "%PATH_TO_SET%;%PATH_ORG%" /M>NUL -setx NODE_PATH "%NODE_PATH_TO_SET%" /M>NUL -::Echo what we're setting back -echo Adding to System Path :^ - -!PATH_TO_SET:;=^ - -! -::Set for the current session -endlocal & set PATH=%PATH_TO_SET%;%PATH_ORG% & set NODE_PATH=%NODE_PATH_TO_SET% -exit /b 0 +goto %RETURN% ::=========================================================== :: ls : List installed versions From 2df50f9b4f04c979f2c15dfcb412ee5f414d0cb2 Mon Sep 17 00:00:00 2001 From: Yoann Moinet Date: Sat, 21 Feb 2015 18:46:57 -0500 Subject: [PATCH 8/8] use absolute path of 'find' to avoid conflicts --- nvmw.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nvmw.bat b/nvmw.bat index 859b1c7..61aa059 100644 --- a/nvmw.bat +++ b/nvmw.bat @@ -421,7 +421,7 @@ set LINE=%LINE:(=@% set LINE=%LINE:)=$% set LINE=%LINE:;= % ::Removing any path referencing '.nvmw' -for %%a in (%LINE%) do echo %%a | find /i ".nvmw">NUL || set NEWPATH=!NEWPATH!;%%a +for %%a in (%LINE%) do echo %%a | %windir%\system32\FIND.exe /i ".nvmw">NUL || set NEWPATH=!NEWPATH!;%%a ::If empty we return empty if [!NEWPATH!] == [] ( set PATH_ORG=