eng/scripts/start-emulators.ps1 (82 lines of code) (raw):
param(
[Parameter(Mandatory=$false)]
[Switch]
$SkipStorageEmulator,
[Parameter(Mandatory=$false)]
[Switch]
$NoWait
)
$DebugPreference = 'Continue'
Write-Host "Skip Storage Emulator: $SkipStorageEmulator"
$startedStorage = $false
if (!$IsWindows -and !$IsLinux -and !$IsMacOs)
{
# For pre-PS6
Write-Host "Could not resolve OS. Assuming Windows."
$assumeWindows = $true
}
function IsStorageEmulatorRunning()
{
try
{
$response = Invoke-WebRequest -Uri "http://127.0.0.1:10000/"
$StatusCode = $Response.StatusCode
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode.value__
}
if ($StatusCode -eq 400)
{
return $true
}
return $false
}
if (!$SkipStorageEmulator)
{
Write-Host "------"
Write-Host ""
Write-Host "---Starting Storage emulator---"
$storageEmulatorRunning = IsStorageEmulatorRunning
if ($storageEmulatorRunning -eq $false)
{
if ($IsWindows -or $assumeWindows)
{
npm install -g azurite
Start-Process azurite.cmd -ArgumentList "--silent --skipApiVersionCheck"
}
else
{
sudo npm install -g azurite
sudo mkdir azurite
sudo azurite --silent --skipApiVersionCheck --location azurite --debug azurite\debug.log &
}
$startedStorage = $true
}
else
{
Write-Host "Storage emulator is already running."
}
Write-Host "------"
Write-Host
}
if ($NoWait -eq $true)
{
Write-Host "'NoWait' specified. Exiting."
Write-Host
exit 0
}
if (!$SkipStorageEmulator -and $startedStorage -eq $true)
{
Write-Host "---Waiting for Storage emulator to be running---"
$storageEmulatorRunning = IsStorageEmulatorRunning
while ($storageEmulatorRunning -eq $false)
{
Write-Host "Storage emulator not ready."
Start-Sleep -Seconds 5
$storageEmulatorRunning = IsStorageEmulatorRunning
}
Write-Host "Storage emulator ready."
Write-Host "------"
Write-Host
}