Skip to content

Instantly share code, notes, and snippets.

@jeremygaither
Last active February 19, 2020 22:58
Show Gist options
  • Save jeremygaither/ec992483ead0617d28fb62f3ac12ac35 to your computer and use it in GitHub Desktop.
Save jeremygaither/ec992483ead0617d28fb62f3ac12ac35 to your computer and use it in GitHub Desktop.

Revisions

  1. jeremygaither revised this gist Feb 19, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion DetectNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -15,7 +15,7 @@ if ($null -eq $env:NVM_HOME) {
    &$nvmexe list
    }

    Write-Putput "Active Node.js Version:"
    Write-Output "Active Node.js Version:"
    &$nodeexe --version

    if ($LASTEXITCODE -ne 0) {
  2. jeremygaither revised this gist Feb 19, 2020. 1 changed file with 30 additions and 0 deletions.
    30 changes: 30 additions & 0 deletions DetectNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    $nvmexe = $null
    $nodeexe = "node.exe"

    if ($null -eq $env:NVM_HOME) {
    Write-Output "NVM is not installed, or not installed correctly..."
    } else {
    Write-Output "NVM_HOME=$env:NVM_HOME"
    Write-Output "NVM_SYMLINK=$env:NVM_SYMLINK"
    Write-Output "PATH=$env:PATH"

    $nvmexe = "$env:NVM_HOME\nvm.exe"
    $nodeexe = "$env:NVM_SYMLINK\node.exe"

    Write-Output "NVM managed versions:"
    &$nvmexe list
    }

    Write-Putput "Active Node.js Version:"
    &$nodeexe --version

    if ($LASTEXITCODE -ne 0) {
    Write-Output "Unable to locade node.exe in path to check version!"
    }

    if (Test-Path -Path '.\nvmrc') {
    $nvmrcVersion = Get-Content .nvmrc
    Write-Output "Desired Node version: $nvmrcVersion"
    } else {
    Write-Output "No .nvmrc found!"
    }
  3. jeremygaither revised this gist Jan 23, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion ManageNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    $ErrorActionPreference = "Stop"

    choco upgrade -y chocolatey
    choco uninstall -y nvm nvm.portable
    choco uninstall -y nvm nvm.portable nodejs-lts
    choco install -y nvm

    refreshenv
  4. jeremygaither revised this gist Jan 22, 2020. 1 changed file with 56 additions and 49 deletions.
    105 changes: 56 additions & 49 deletions ManageNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -20,76 +20,83 @@ Write-Output "Desired Node version: $nvmrcVersion"
    $nvmAvailable = (&$nvmexe list available)

    $candidateVersionLines = $nvmAvailable | Where-Object -FilterScript {
    $_ -like ('* ' + ($nvmrcVersion) + '.*')
    $_ -like ('* ' + ($nvmrcVersion) + '.*')
    }

    $candidateVersions = @()

    foreach ($line in $candidateVersionLines) {
    $versions = $line.Split('|').Trim()
    foreach ($version in $versions) {
    if ([string]::IsNullOrWhiteSpace($version)) {
    continue
    $versions = $line.Split('|').Trim()
    foreach ($version in $versions) {
    if ([string]::IsNullOrWhiteSpace($version)) {
    continue
    }

    Write-Output ("testing: $version")

    if ($version -like ($nvmrcVersion + '.*')) {
    Write-Output ("found: $version")
    $candidateVersions += $version
    }
    }

    Write-Output ("testing: $version")

    if ($version -like ($nvmrcVersion + '.*')) {
    Write-Output ("found: $version")
    $candidateVersions += $version
    }
    }
    }

    Write-Output "candidateVersions: $candidateVersions"
    $desiredVersion = $candidateVersions[0]

    if ((&$nvmexe use $desiredVersion) -like '*not installed*') {
    Write-Output "desiredVersion ""$desiredVersion"" not installed, installing..."
    &$nvmexe install $desiredVersion
    Write-Output "desiredVersion ""$desiredVersion"" not installed, installing..."
    &$nvmexe install $desiredVersion

    if (-not $?) {
    Write-Warning 'There was some error installing the desired node version'
    if (-not $?) {
    Write-Warning 'There was some error installing the desired node version'

    exit 1
    }
    exit 1
    }

    &$nvmexe use $desiredVersion
    &$nvmexe use $desiredVersion

    if (-not $?) {
    Write-Warning 'There was some error activating the desired node version'
    if (-not $?) {
    Write-Warning 'There was some error activating the desired node version'

    exit 1
    }
    } else {
    Write-Output "desiredVersion ""$desiredVersion"" should be installed..."
    &$nvmexe use $desiredVersion
    exit 1
    }
    }
    else {
    Write-Output "desiredVersion ""$desiredVersion"" should be installed..."
    &$nvmexe use $desiredVersion
    }

    while ($true) {
    if (Test-Path "$env:NVM_SYMLINK") {
    break
    }
    if (Test-Path "$env:NVM_SYMLINK") {
    break
    }

    Write-Output "Waiting for nodejs symlink to become available..."
    Start-Sleep -Seconds 5
    Write-Output "Waiting for nodejs symlink to become available..."
    Start-Sleep -Seconds 5
    }

    $nodeVersion = (&$nodeexe --version)

    if ($nodeVersion -like "v$desiredVersion*") {
    Write-Output "node version good: $nodeVersion"
    } else {
    Write-Output "Waiting for symlink to update..."
    Start-Sleep 10
    $nodeVersion = (&$nodeexe --version)
    Write-Output "nodeVersion: $nodeVersion"

    if ($nodeVersion -like "v$desiredVersion*") {
    Write-Output "Desired Node version ""$desiredVersion"" active: $nodeVersion"
    }
    else {
    Write-Output "There was a problem activating Node $desiredVersion"
    exit 1
    }
    $waitCount = 0
    $maxWaits = 6

    while ($true) {

    if ($waitCount -gt $maxWaits) {
    Write-Output "unable to switch node versions!"
    exit 1
    }

    $nodeVersion = (&$nodeexe --version)

    if ($nodeVersion -like "v$desiredVersion*") {
    Write-Output "node version good: $nodeVersion"
    break
    }
    else {
    Write-Output "nodeVersion: $nodeVersion"
    Write-Output "Waiting for symlink to update..."
    Start-Sleep 10

    $waitCount++
    }
    }
  5. jeremygaither revised this gist Jan 22, 2020. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions ManageNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -85,8 +85,7 @@ if ($nodeVersion -like "v$desiredVersion*") {
    $nodeVersion = (&$nodeexe --version)
    Write-Output "nodeVersion: $nodeVersion"

    if (if ($nodeVersion -like "v$desiredVersion*") {
    ) {
    if ($nodeVersion -like "v$desiredVersion*") {
    Write-Output "Desired Node version ""$desiredVersion"" active: $nodeVersion"
    }
    else {
  6. jeremygaither revised this gist Jan 22, 2020. 1 changed file with 3 additions and 2 deletions.
    5 changes: 3 additions & 2 deletions ManageNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -77,15 +77,16 @@ while ($true) {

    $nodeVersion = (&$nodeexe --version)

    if ($nodeVersion -eq $desiredVersion) {
    if ($nodeVersion -like "v$desiredVersion*") {
    Write-Output "node version good: $nodeVersion"
    } else {
    Write-Output "Waiting for symlink to update..."
    Start-Sleep 10
    $nodeVersion = (&$nodeexe --version)
    Write-Output "nodeVersion: $nodeVersion"

    if ($nodeVersion -like "v$desiredVersion *") {
    if (if ($nodeVersion -like "v$desiredVersion*") {
    ) {
    Write-Output "Desired Node version ""$desiredVersion"" active: $nodeVersion"
    }
    else {
  7. jeremygaither revised this gist Jan 22, 2020. 1 changed file with 75 additions and 31 deletions.
    106 changes: 75 additions & 31 deletions ManageNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -1,51 +1,95 @@
    $ErrorActionPreference = "Stop"

    choco upgrade -y chocolatey
    choco uninstall -y nvm nvm.portable
    choco install -y nvm

    refreshenv

    Write-Output "NVM_HOME=$env:NVM_HOME"
    Write-Output "NVM_SYMLINK=$env:NVM_SYMLINK"
    Write-Output "PATH=$env:PATH"

    $nvmexe = "$env:NVM_HOME\nvm.exe"
    $nodeexe = "$env:NVM_SYMLINK\node.exe"


    $nvmrcVersion = Get-Content .nvmrc
    Write-Output "Desired Node version: $nvmrcVersion"

    $nvmAvailable = (nvm list available)
    $nvmAvailable = (&$nvmexe list available)

    $candidateVersionLines = $nvmAvailable | Where-Object -FilterScript {
    $_ -like ('* ' + ($nvmrcVersion) + '.*')
    $_ -like ('* ' + ($nvmrcVersion) + '.*')
    }

    $candidateVersions = @()

    foreach ($line in $candidateVersionLines) {
    $versions = $line.Split('|').Trim()
    foreach ($version in $versions) {
    if ([string]::IsNullOrWhiteSpace($version)) {
    continue
    }

    Write-Output ("testing: $version")

    if ($version -like ($nvmrcVersion + '.*')) {
    Write-Output ("found: $version")
    $candidateVersions += $version
    }
    $versions = $line.Split('|').Trim()
    foreach ($version in $versions) {
    if ([string]::IsNullOrWhiteSpace($version)) {
    continue
    }

    Write-Output ("testing: $version")

    if ($version -like ($nvmrcVersion + '.*')) {
    Write-Output ("found: $version")
    $candidateVersions += $version
    }
    }
    }

    Write-Output "candidateVersions: $candidateVersions"
    $desiredVersion = $candidateVersions[0]

    foreach ($version in $candidateVersions) {
    if ((nvm use $version) -like '*not installed*') {
    nvm install $version
    nvm use $version
    }
    if ((&$nvmexe use $desiredVersion) -like '*not installed*') {
    Write-Output "desiredVersion ""$desiredVersion"" not installed, installing..."
    &$nvmexe install $desiredVersion

    if (-not $?) {
    Write-Warning 'There was some error installing the desired node version'

    exit 1
    }

    &$nvmexe use $desiredVersion

    if (-not $?) {
    Write-Warning 'There was some error activating the desired node version'

    exit 1
    }
    } else {
    Write-Output "desiredVersion ""$desiredVersion"" should be installed..."
    &$nvmexe use $desiredVersion
    }

    $nodeVersion = (node --version)
    while ($true) {
    if (Test-Path "$env:NVM_SYMLINK") {
    break
    }

    if ($nodeVersion -eq $candidateVersions[0]) {
    Write-Output "node version good: $nodeVersion"
    Write-Output "Waiting for nodejs symlink to become available..."
    Start-Sleep -Seconds 5
    }

    $nodeVersion = (&$nodeexe --version)

    if ($nodeVersion -eq $desiredVersion) {
    Write-Output "node version good: $nodeVersion"
    } else {
    Write-Output "Waiting for symlink to update..."
    Start-Sleep 5
    $nodeVersion = (node --version)
    if ($nodeVersion -ne $candidateVersions[0]) {
    Write-Output "There was a problem activating Node $candidateVersions[0]"
    exit 1
    } else {
    Write-Output "Desired Node version ""$candidateVersions[0]"" active: $nodeVersion"
    }
    Write-Output "Waiting for symlink to update..."
    Start-Sleep 10
    $nodeVersion = (&$nodeexe --version)
    Write-Output "nodeVersion: $nodeVersion"

    if ($nodeVersion -like "v$desiredVersion *") {
    Write-Output "Desired Node version ""$desiredVersion"" active: $nodeVersion"
    }
    else {
    Write-Output "There was a problem activating Node $desiredVersion"
    exit 1
    }
    }
  8. jeremygaither created this gist Jan 22, 2020.
    51 changes: 51 additions & 0 deletions ManageNodeVersion.ps1
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,51 @@
    $nvmrcVersion = Get-Content .nvmrc
    Write-Output "Desired Node version: $nvmrcVersion"

    $nvmAvailable = (nvm list available)

    $candidateVersionLines = $nvmAvailable | Where-Object -FilterScript {
    $_ -like ('* ' + ($nvmrcVersion) + '.*')
    }

    $candidateVersions = @()

    foreach ($line in $candidateVersionLines) {
    $versions = $line.Split('|').Trim()
    foreach ($version in $versions) {
    if ([string]::IsNullOrWhiteSpace($version)) {
    continue
    }

    Write-Output ("testing: $version")

    if ($version -like ($nvmrcVersion + '.*')) {
    Write-Output ("found: $version")
    $candidateVersions += $version
    }
    }
    }

    Write-Output "candidateVersions: $candidateVersions"

    foreach ($version in $candidateVersions) {
    if ((nvm use $version) -like '*not installed*') {
    nvm install $version
    nvm use $version
    }
    }

    $nodeVersion = (node --version)

    if ($nodeVersion -eq $candidateVersions[0]) {
    Write-Output "node version good: $nodeVersion"
    } else {
    Write-Output "Waiting for symlink to update..."
    Start-Sleep 5
    $nodeVersion = (node --version)
    if ($nodeVersion -ne $candidateVersions[0]) {
    Write-Output "There was a problem activating Node $candidateVersions[0]"
    exit 1
    } else {
    Write-Output "Desired Node version ""$candidateVersions[0]"" active: $nodeVersion"
    }
    }