get node install working in windows
authorAJ ONeal <aj@therootcompany.com>
Mon, 27 Apr 2020 19:15:18 +0000 (19:15 +0000)
committerAJ ONeal <aj@therootcompany.com>
Mon, 27 Apr 2020 19:15:18 +0000 (19:15 +0000)
node/node.bat
pathman/pathman.bat [new file with mode: 0644]
webi/webi.bat [new file with mode: 0644]
webi/webinstall.bat [new file with mode: 0644]

index 6e3aaf818a83bbbf562a51df6f5627214136dbb5..74b13198fbe97c5e6ce37ce3eec8bd691ba487c1 100644 (file)
@@ -1,10 +1,21 @@
-mkdir %userprofile%\.local
-mkdir %userprofile%\.local\opt
+setlocal
+@echo off
+pushd "%userprofile%\.local\opt" || goto :error
+  powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://nodejs.org/dist/v12.16.2/node-v12.16.2-win-x64.zip -OutFile node-v12.16.2-win-x64.zip || goto :error
+  rem Windows BSD-tar handles zip. Imagine that.
+  tar xf node-v12.16.2-win-x64.zip || goto :error
+  dir
+  rename node-v12.16.2-win-x64 node-v12.16.2 || goto :error
+  rmdir node-v12.16.2-win-x64
+  del node-v12.16.2-win-x64.zip || goto :error
+popd || goto :error
 
-pushd %userprofile%\.local\opt
-  powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://nodejs.org/dist/v12.16.2/node-v12.16.2-win-x64.zip -OutFile node-v12.16.2-win-x64.zip
-  tar xf node-v12.16.2-win-x64.zip
-  move node-v12.16.2-win-x64 node-v12.16.2
-popd
+rem make npm not act stupid about which node to use... ugh (this should be the default)
+"%userprofile%\.local\opt\node-v12.16.2\npm.cmd" --scripts-prepend-node-path=true config set scripts-prepend-node-path true
+pathman add .local\opt\node-v12.16.2 || goto :error
 
-pathman add %userprofile%\.local\opt\node-v12.16.2\bin
+goto :EOF
+
+:error
+echo Failed with error #%errorlevel%.
+exit /b %errorlevel%
diff --git a/pathman/pathman.bat b/pathman/pathman.bat
new file mode 100644 (file)
index 0000000..67ae251
--- /dev/null
@@ -0,0 +1,19 @@
+pushd "%userprofile%" || goto :error
+  IF NOT EXIST .local (
+    mkdir .local || goto :error
+  )
+  IF NOT EXIST .local\bin (
+    mkdir .local\bin || goto :error
+  )
+
+  pushd .local\bin || goto :error
+    rem TODO %PROCESSOR_ARCH%
+    powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest "https://rootprojects.org/pathman/dist/windows/amd64/pathman.exe" -OutFile pathman.exe || goto :error
+  popd || goto :error
+popd
+
+goto :EOF
+
+:error
+echo Failed with error #%errorlevel%.
+exit /b %errorlevel%
diff --git a/webi/webi.bat b/webi/webi.bat
new file mode 100644 (file)
index 0000000..30da18b
--- /dev/null
@@ -0,0 +1,2 @@
+rem do nothing because this is a special case
+rem due to windows complexities, webinstall.bat is always installed to ~/.local/bin/webi.bat
diff --git a/webi/webinstall.bat b/webi/webinstall.bat
new file mode 100644 (file)
index 0000000..cac5c6d
--- /dev/null
@@ -0,0 +1,38 @@
+@echo off
+pushd "%userprofile%" || goto :error
+  IF NOT EXIST .local (
+    mkdir .local || goto :error
+  )
+  IF NOT EXIST .local\bin (
+    mkdir .local\bin || goto :error
+  )
+  IF NOT EXIST .local\opt (
+    mkdir .local\opt || goto :error
+  )
+
+  pushd .local\bin || goto :error
+    if NOT EXIST pathman.exe (
+      echo updating PATH management
+      powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://webinstall.dev/pathman/pathman.bat -OutFile pathman-setup.bat || goto :error
+      call .\pathman-setup.bat || goto :error
+      del pathman-setup.bat  || goto :error
+      rem TODO there's rumor of a windows tool called 'pathman' that does the same thing?
+      pathman add "%userprofile%\.local\bin" || goto :error
+    )
+  popd || goto :error
+
+  echo downloading and installing %1
+  powershell $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://webinstall.dev/%1/%1.bat -OutFile %1-webinstall.bat || goto :error
+
+  rem TODO only add if it's not in there already
+  PATH .local\bin;%PATH%
+
+  call %1-webinstall.bat || goto :error
+  del %1-webinstall.bat || goto :error
+popd
+
+goto :EOF
+
+:error
+echo Failed with error #%errorlevel%.
+exit /b %errorlevel%