# Copyright 2019-2022 ActiveState Software Inc. All rights reserved. <# .EXAMPLE install.ps1 -b branchToInstall #> Set-StrictMode -Off # URL to fetch installer archive from $script:BASEFILEURL = "https://state-tool.s3.amazonaws.com/update/state" # The name of the remove archive to download $script:ARCHIVENAME = "state-installer.zip" # Name of the installer executable to ultimately use $script:INSTALLERNAME = "state-installer.exe" # Channel the installer will target $script:CHANNEL = "release" $script:SESSION_TOKEN_VERIFY = -join ("{", "TOKEN", "}") $script:SESSION_TOKEN = "pdli01" $script:SESSION_TOKEN_VALUE = "" if ("$SESSION_TOKEN" -ne "$SESSION_TOKEN_VERIFY") { $script:SESSION_TOKEN_VALUE = $script:SESSION_TOKEN } function parseChannel([string[]]$arr) { for ($i = 0; $i -le $arr.Length; $i++) { $arg = $arr[$i] if ($arg -eq "-b" -And $arr.Length -ge ($i + 2)) { return $arr[$i + 1] } } return $script:CHANNEL } $script:CHANNEL = parseChannel $args function download([string] $url, [string] $out) { [int]$Retrycount = "0" do { try { $downloader = new-object System.Net.WebClient if ($out -eq "") { return $downloader.DownloadString($url) } else { return $downloader.DownloadFile($url, $out) } } catch { if ($Retrycount -gt 5) { Write-Error "Could not Download after 5 retries." throw $_ } else { Write-Host "Could not Download, retrying..." Write-Host $_ $Retrycount = $Retrycount + 1 } } } While ($true) } function tempDir() { $parent = [System.IO.Path]::GetTempPath() [string]$name = [System.Guid]::NewGuid() New-Item -ItemType Directory -Path (Join-Path $parent $name) } function progress([string] $msg) { Write-Host "• $msg..." -NoNewline } function progress_done() { $greenCheck = @{ Object = [Char]8730 ForegroundColor = 'Green' NoNewLine = $true } Write-Host @greenCheck Write-Host ' Done' -ForegroundColor Green } function progress_fail() { Write-Host 'x Failed' -ForegroundColor Red } function error([string] $msg) { Write-Host $msg -ForegroundColor Red } progress "Preparing Installer for State Tool Package Manager" $zipURL = "$script:BASEFILEURL/$script:CHANNEL/windows-amd64/$script:ARCHIVENAME" $tmpParentPath = tempDir $zipPath = Join-Path $tmpParentPath $script:ARCHIVENAME $exePath = Join-Path $tmpParentPath $script:INSTALLERNAME try { download $zipURL $zipPath } catch [System.Exception] { progress_fail Write-Error "Could not download $zipURL to $zipPath." Write-Error $_.Exception.Message return 1 } try { Expand-Archive -ErrorAction Stop -LiteralPath $zipPath -DestinationPath $tmpParentPath } catch { progress_fail Write-Error $_.Exception.Message return 1 } progress_done Write-Host "" $OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8 $PSDefaultParameterValues['*:Encoding'] = 'utf8' [System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $env:ACTIVESTATE_SESSION_TOKEN = $script:SESSION_TOKEN_VALUE & $exePath $args --source-installer="install.ps1" if (Test-Path env:ACTIVESTATE_SESSION_TOKEN) { Remove-Item Env:\ACTIVESTATE_SESSION_TOKEN } # SIG # Begin signature block # MIIOGgYJKoZIhvcNAQcCoIIOCzCCDgcCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUBrfoSAJQTGCLSnhPiQ7mY0Ci # 6YGgggtRMIIFVDCCBDygAwIBAgIRAI+/xW/5m0RjSTHEdvWZn3swDQYJKoZIhvcN # AQELBQAwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3Rl # cjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQw # IgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwHhcNMjAxMDAxMDAw # MDAwWhcNMjIxMDAxMjM1OTU5WjCBujELMAkGA1UEBhMCQ0ExDzANBgNVBBEMBlY2 # RTJLMzEZMBcGA1UECAwQQnJpdGlzaCBDb2x1bWJpYTESMBAGA1UEBwwJVmFuY291 # dmVyMSUwIwYDVQQJDBwxMTc3IEhhc3RpbmdzIFN0IFcgVW5pdCAxMDAwMSEwHwYD # VQQKDBhBY3RpdmVTdGF0ZSBTb2Z0d2FyZSBJbmMxITAfBgNVBAMMGEFjdGl2ZVN0 # YXRlIFNvZnR3YXJlIEluYzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB # AKJ1fz+Zf9YDjH1+cvShqe6dLasMpZwekPfQqK8T3q95Y5E1qPRIc1OZcDXuG103 # 5ngZfgL8rwSCqQck+unE3TjNzAK+ShnhD0txkz4cGTbw1CJ/EI/QhBwLv4Sf/Jbs # B4wAsocaUUzUqqkMwkzJPhBQvVhYEHSil2vRZZMOM9MfBmKrdITz5pDF3dSPDTBj # B33VvBJks9IDnFQGBVy01aB8H7BRu63/DqAFpSJJctP6HAzgfnkj9pd4A2JDPu/6 # 2P0gHBrt24OKxsBLR0LEWIW/yA4KtHi14nWDQUdnEHHDt7H5fqPwwYzSYi+5XtAk # e2dagFmEDPHRmCCKtmu+m1UCAwEAAaOCAZAwggGMMB8GA1UdIwQYMBaAFA7hOqhT # OjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBTo1zsdZmk/DJ85GLCeigTRoep65jAO # BgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcD # AzARBglghkgBhvhCAQEEBAMCBBAwSgYDVR0gBEMwQTA1BgwrBgEEAbIxAQIBAwIw # JTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQQB # MEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln # b1JTQUNvZGVTaWduaW5nQ0EuY3JsMHMGCCsGAQUFBwEBBGcwZTA+BggrBgEFBQcw # AoYyaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNpZ25pbmdD # QS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqG # SIb3DQEBCwUAA4IBAQAlX5Wi+wawAMijiN5IAFyaGrd3cpSCndCdWvS6KQ6o9f67 # zml6JdTL94PhRwGTe0o+aOrFMOPIx/f/83IS0YLduIhcVfIYXzGeMcXFG9Z1FzHI # 2eT52hxnfThR8gIho3D5ETDFV48IaHmh9VgbxF8r8yVZ/0ufMFrqxWctZqTXmJJw # OTPC6ztnLaZ6cd4dju26RNVFOVQyO6+G5vCitk45kTsd7Jl1RC0J6Qm/LYWCw1Gb # cyPjQv3pKnrBd8Ux3ZW286c9ZzpZfvK7ETw19usW0NNw+RGJRQaqZWUTu4J7NLix # Oj++c97i2uPCAG1o4kW0BfUxRnhZOty3yh5jJc05MIIF9TCCA92gAwIBAgIQHaJI # MG+bJhjQguCWfTPTajANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMCVVMxEzAR # BgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK # ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0Eg # Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMx # MjM1OTU5WjB8MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz # dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQx # JDAiBgNVBAMTG1NlY3RpZ28gUlNBIENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZI # hvcNAQEBBQADggEPADCCAQoCggEBAIYijTKFehifSfCWL2MIHi3cfJ8Uz+MmtiVm # KUCGVEZ0MWLFEO2yhyemmcuVMMBW9aR1xqkOUGKlUZEQauBLYq798PgYrKf/7i4z # IPoMGYmobHutAMNhodxpZW0fbieW15dRhqb0J+V8aouVHltg1X7XFpKcAC9o95ft # anK+ODtj3o+/bkxBXRIgCFnoOc2P0tbPBrRXBbZOoT5Xax+YvMRi1hsLjcdmG0qf # nYHEckC14l/vC0X/o84Xpi1VsLewvFRqnbyNVlPG8Lp5UEks9wO5/i9lNfIi6iwH # r0bZ+UYc3Ix8cSjz/qfGFN1VkW6KEQ3fBiSVfQ+noXw62oY1YdMCAwEAAaOCAWQw # ggFgMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQO # 4TqoUzox1Yq+wbutZxoDha00DjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgw # BgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAwYIKwYBBQUHAwgwEQYDVR0gBAow # CDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0 # LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr # BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv # bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov # L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEATWNQ7Uc0SmGk # 295qKoyb8QAAHh1iezrXMsL2s+Bjs/thAIiaG20QBwRPvrjqiXgi6w9G7PNGXkBG # iRL0C3danCpBOvzW9Ovn9xWVM8Ohgyi33i/klPeFM4MtSkBIv5rCT0qxjyT0s4E3 # 07dksKYjalloUkJf/wTr4XRleQj1qZPea3FAmZa6ePG5yOLDCBaxq2NayBWAbXRe # SnV+pbjDbLXP30p5h1zHQE1jNfYw08+1Cg4LBH+gS667o6XQhACTPlNdNKUANWls # vp8gJRANGftQkGG+OY96jk32nw4e/gdREmaDJhlIlc5KycF/8zoFm/lv34h/wCOe # 0h5DekUxwZxNqfBZslkZ6GqNKQQCd3xLS81wvjqyVVp4Pry7bwMQJXcVNIr5NsxD # kuS6T/FikyglVyn7URnHoSVAaoRXxrKdsbwcCtp8Z359LukoTBh+xHsxQXGaSyns # Cz1XUNLK3f2eBVHlRHjdAd6xdZgNVCT98E7j4viDvXK6yz067vBeF5Jobchh+abx # KgoLpbn0nu6YMgWFnuv5gynTxix9vTp3Los3QqBqgu07SqqUEKThDfgXxbZaeTMY # kuO1dfih6Y4KJR7kHvGfWocj/5+kUZ77OYARzdu1xKeogG/lU9Tg46LC0lsa+jIm # LWpXcBw8pFguo/NbSwfcMlnzh6cabVgxggIzMIICLwIBATCBkTB8MQswCQYDVQQG # EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxm # b3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxJDAiBgNVBAMTG1NlY3RpZ28g # UlNBIENvZGUgU2lnbmluZyBDQQIRAI+/xW/5m0RjSTHEdvWZn3swCQYFKw4DAhoF # AKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisG # AQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcN # AQkEMRYEFMgPOk1X5bI6wFJ/VvYP3Zs6q5quMA0GCSqGSIb3DQEBAQUABIIBAEvj # cN+5OS+SdM5Nw558vS8BvE8m+Aqlt/UdvZDhZk9aZ4s7rU7CJkk7KIcOLtQ8yX5G # URIQZFvzHEEue2gLBoB5vaGiS1tD0qZojjCMwtJgzipgTNm/sA7h3Sey90OS/RpK # aPTvvMmlzH0d6XY/euMEImctATVekPf1RQG83oWAGp7sL993ploXLFHY1taZ1Sxo # xKWo4AW0zrnga5MROOlqgBxBGOwDJVhNZICQM7GNAI/pjIICGrBK3E4oJS9XQd27 # fKnldlN2gdhDdO0DZO4WmGEB9iFw5k1wu2JTQUS3xYIuu8RGfgTzBE4eUGBmq2CT # v8zDe1qoXfLmSG0J6lU= # SIG # End signature block