function SetVariable([string]$key, [string]$value) { [environment]::SetEnvironmentVariable($key, $value, "User") [environment]::SetEnvironmentVariable($key, $value) } function AskYesNoQuestion([string]$question, [string]$key) { $answer = Read-Host -Prompt ($question + " Press Y to set this, otherwise we'll skip it") if ($answer -eq "Y") { SetVariable $key "YES" } else { SetVariable $key $null } Write-Host return ($answer -eq "Y") } function VerifyEnvironmentVariable([string]$friendlyName, [string]$key, [bool]$optional = $false) { if ($optional -eq $true) { $label = "(optional)" } else { $label = "(required)" } $existing_value = [environment]::GetEnvironmentVariable($key,"User") if ($existing_value -eq $null) { $value = Read-Host -Prompt "Set the $friendlyName to use for the integration tests $label" SetVariable $key $value } else { Write-Host "$existing_value found as the configured $friendlyName" if ($optional -eq $true) { $clear = Read-Host -Prompt 'Want to remove or change this optional value, press Y' if ($clear -eq "Y") { $reset = Read-Host -Prompt "Press R to remove and Press C to change the value, otherwise we'll move on" if ($reset -eq "C") { $value = Read-Host -Prompt "Change the $friendlyName to use for the integration tests" SetVariable $key $value } elseif ($reset -eq "R") { SetVariable $key $null } } } else { $reset = Read-Host -Prompt "Press Y to change this value, otherwise we'll move on " if ($reset -eq "Y") { $value = Read-Host -Prompt "Change the $friendlyName to use for the integration tests" SetVariable $key $value } } } Write-Host } Write-Host Write-Warning "BIG FREAKING WARNING!!!!!" Write-Warning "You should use a test account when running the Octokit integration tests!" Write-Host Write-Host VerifyEnvironmentVariable "test account name" "OCTOKIT_GITHUBUSERNAME" VerifyEnvironmentVariable "test account password" "OCTOKIT_GITHUBPASSWORD" $true VerifyEnvironmentVariable "test account OAuth token" "OCTOKIT_OAUTHTOKEN" if (AskYesNoQuestion "Some tests require a second test account, do you want to set one up?" "OCTOKIT_PRIVATEREPOSITORIES") { VerifyEnvironmentVariable "Second test account name" "OCTOKIT_GITHUBUSERNAME_2" VerifyEnvironmentVariable "Second account password" "OCTOKIT_GITHUBPASSWORD_2" } AskYesNoQuestion "Do you have private repositories associated with your test account?" "OCTOKIT_PRIVATEREPOSITORIES" | Out-Null VerifyEnvironmentVariable "organization name" "OCTOKIT_GITHUBORGANIZATION" $true VerifyEnvironmentVariable "Override GitHub URL" "OCTOKIT_CUSTOMURL" $true VerifyEnvironmentVariable "application ClientID" "OCTOKIT_CLIENTID" $true VerifyEnvironmentVariable "application Secret" "OCTOKIT_CLIENTSECRET" $true if (AskYesNoQuestion "Do you wish to setup GitHubApps integration test settings?" "OCTOKIT_GITHUBAPP_ENABLED") { VerifyEnvironmentVariable "GitHub App ID" "OCTOKIT_GITHUBAPP_ID" VerifyEnvironmentVariable "GitHub App SLUG" "OCTOKIT_GITHUBAPP_SLUG" VerifyEnvironmentVariable "GitHub App Pem File" "OCTOKIT_GITHUBAPP_PEMFILE" } if (AskYesNoQuestion "Do you wish to enable GitHub Enterprise (GHE) Integration Tests?" "OCTOKIT_GHE_ENABLED") { VerifyEnvironmentVariable "GitHub Enterprise account name" "OCTOKIT_GHE_USERNAME" VerifyEnvironmentVariable "GitHub Enterprise account password" "OCTOKIT_GHE_PASSWORD" $true VerifyEnvironmentVariable "GitHub Enterprise Management Console password" "OCTOKIT_GHE_CONSOLEPASSWORD" $true VerifyEnvironmentVariable "GitHub Enterprise OAuth token" "OCTOKIT_GHE_OAUTHTOKEN" VerifyEnvironmentVariable "GitHub Enterprise organization name" "OCTOKIT_GHE_ORGANIZATION" $true VerifyEnvironmentVariable "GitHub Enterprise URL" "OCTOKIT_GHE_URL" $true VerifyEnvironmentVariable "GitHub Enterprise application ClientID" "OCTOKIT_GHE_CLIENTID" $true VerifyEnvironmentVariable "GitHub Enterprise application Secret" "OCTOKIT_GHE_CLIENTSECRET" $true } VerifyEnvironmentVariable "Repository with codespaces" "OCTOKIT_REPOSITORY_WITH_CODESPACES" $true