sojorn/run_dev.ps1
Patrick Britton d5fc89b97a
2026-02-16 07:27:41 -06:00

80 lines
2.3 KiB
PowerShell

# run_dev.ps1 — Run Sojorn on the default connected device (mobile/emulator)
# Usage: .\run_dev.ps1 [-EnvPath .env]
param(
[string]$EnvPath = ""
)
$RepoRoot = $PSScriptRoot
$AppPath = Join-Path $RepoRoot "sojorn_app"
if ([string]::IsNullOrWhiteSpace($EnvPath)) {
$EnvPath = Join-Path $RepoRoot ".env"
}
if (-not (Test-Path $AppPath)) {
Write-Error "sojorn_app not found at ${AppPath}"
exit 1
}
function Get-EnvValues($path) {
$vals = @{}
if (-not (Test-Path $path)) {
Write-Host "No .env file found at ${path}. Using defaults." -ForegroundColor Yellow
$vals['API_BASE_URL'] = 'https://api.sojorn.net/api/v1'
return $vals
}
Get-Content $path | ForEach-Object {
$line = $_.Trim()
if ($line.Length -eq 0 -or $line.StartsWith('#')) { return }
$parts = $line -split '=', 2
if ($parts.Count -lt 2) { return }
$key = $parts[0].Trim()
$value = $parts[1].Trim()
if ($value.StartsWith('"') -and $value.EndsWith('"')) {
$value = $value.Substring(1, $value.Length - 2)
}
$vals[$key] = $value
}
return $vals
}
$values = Get-EnvValues $EnvPath
$defineArgs = @()
$keysOfInterest = @('API_BASE_URL', 'FIREBASE_WEB_VAPID_KEY', 'TURNSTILE_SITE_KEY')
foreach ($k in $keysOfInterest) {
if ($values.ContainsKey($k) -and -not [string]::IsNullOrWhiteSpace($values[$k])) {
$defineArgs += "--dart-define=$k=$($values[$k])"
}
}
if (-not $values.ContainsKey('API_BASE_URL') -or [string]::IsNullOrWhiteSpace($values['API_BASE_URL'])) {
$currentApi = 'https://api.sojorn.net/api/v1'
$defineArgs += "--dart-define=API_BASE_URL=$currentApi"
} else {
$currentApi = $values['API_BASE_URL']
}
Write-Host "Launching Sojorn (device)..." -ForegroundColor Cyan
Write-Host "API: $currentApi"
$flutterCmd = Get-Command flutter -ErrorAction SilentlyContinue
if ($flutterCmd) {
$FlutterExe = $flutterCmd.Source
} else {
$fallbackFlutter = "C:\Users\Patrick\develop\flutter\flutter\bin\flutter.bat"
if (Test-Path $fallbackFlutter) {
$FlutterExe = $fallbackFlutter
} else {
Write-Error "flutter command not found in PATH and fallback not found at $fallbackFlutter"
exit 1
}
}
Push-Location $AppPath
try {
Write-Host "Running: flutter run $($defineArgs -join ' ')" -ForegroundColor DarkGray
& $FlutterExe run @defineArgs @Args
}
finally {
Pop-Location
}