add shebang to all .ps1
[webi-installers/.git] / node / install.ps1
1 #!/usr/bin/env pwsh
2
3 # Fetch archive
4 IF (!(Test-Path -Path "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"))
5 {
6     # TODO: arch detection
7     echo "Downloading $Env:PKG_NAME from $Env:WEBI_PKG_URL to $Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"
8     #Invoke-WebRequest https://nodejs.org/dist/v12.16.2/node-v12.16.2-win-x64.zip -OutFile node-v12.16.2-win-x64.zip
9     & curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_PKG_URL" -o "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE.part"
10     & move "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE.part" "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"
11 }
12
13 IF (!(Test-Path -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION"))
14 {
15     echo "Installing $Env:PKG_NAME"
16     # TODO: temp directory
17
18     # Enter opt
19     pushd .local\tmp
20
21         echo "Remove leftover node-v* stuffs"
22         Remove-Item -Path "node-v*" -Recurse -ErrorAction Ignore
23
24         # Unpack archive
25         # Windows BSD-tar handles zip. Imagine that.
26         echo "Unpacking $Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"
27         & tar xf "$Env:USERPROFILE\Downloads\$Env:WEBI_PKG_FILE"
28         Get-ChildItem "node-v*"
29
30         # Settle unpacked archive into place
31         echo "New Name: $Env:PKG_NAME-v$Env:WEBI_VERSION"
32         Get-ChildItem "node-v*" | Select -f 1 | Rename-Item -NewName "$Env:PKG_NAME-v$Env:WEBI_VERSION"
33         echo "New Location: $Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION"
34         Move-Item -Path "$Env:PKG_NAME-v$Env:WEBI_VERSION" -Destination "$Env:USERPROFILE\.local\opt"
35
36     # Exit tmp
37     popd
38 }
39
40 echo "Versioning $Env:PKG_NAME"
41 Remove-Item -Path "$Env:USERPROFILE\.local\opt\node" -Recurse -ErrorAction Ignore
42 Copy-Item -Path "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME-v$Env:WEBI_VERSION" -Destination "$Env:USERPROFILE\.local\opt\$Env:PKG_NAME" -Recurse
43
44 # make npm not act stupid about which node to use... ugh (this should be the default)
45 & .\.local\opt\node\npm.cmd --scripts-prepend-node-path=true config set scripts-prepend-node-path true
46
47 # Add to path
48 & "$Env:USERPROFILE\.local\bin\pathman.exe" add .local\opt\node