#!/usr/bin/env pwsh
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'

.\scripts\Windows\starter.ps1
if ($LASTEXITCODE -ne 0) {
    exit $LASTEXITCODE
}

$envFile = '.env'

if (-not (Test-Path $envFile))
{
    Write-Error ".env file not found in the current directory."
    exit 1
}

$envVars = @{ }

Get-Content $envFile | ForEach-Object {
    $line = $_.Trim()
    if ($line -eq '' -or $line.StartsWith('#'))
    {
        return
    }
    if ($line -notmatch '=')
    {
        return
    }

    $m = [Regex]::Match($line, '^\s*([^=]+?)\s*=\s*(.*)$')
    if (-not $m.Success)
    {
        return
    }

    $key = $m.Groups[1].Value
    $value = $m.Groups[2].Value

    if (( $value.StartsWith('"') -and $value.EndsWith('"')) -or
            ( $value.StartsWith("'") -and $value.EndsWith("'")))
    {
        $value = $value.Substring(1, $value.Length - 2)
    }

    New-Item -Force -Path Env:\$key -Value $value | Out-Null
    $envVars[$key] = $value
}

if ($envVars.Count -gt 0)
{
    $formatted = ($envVars.GetEnumerator() | Sort-Object Name | ForEach-Object {
        "$( $_.Key )=$( $_.Value )"
    }) -join ';'
    Write-Host $formatted
}
