42 lines
1.2 KiB
PowerShell
42 lines
1.2 KiB
PowerShell
Set-StrictMode -Version Latest
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$repoRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
Set-Location $repoRoot
|
|
|
|
$env:GOCACHE = Join-Path $repoRoot ".cache/go-build"
|
|
$outputPath = Join-Path $repoRoot "tools/sow-toolkit.exe"
|
|
|
|
function Test-ToolSourcesAreNewer {
|
|
if (-not (Test-Path $outputPath)) {
|
|
return $true
|
|
}
|
|
|
|
$outputTime = (Get-Item -LiteralPath $outputPath).LastWriteTimeUtc
|
|
$sourcePaths = @("go.mod", "go.sum", "cmd", "internal")
|
|
foreach ($sourcePath in $sourcePaths) {
|
|
$fullPath = Join-Path $repoRoot $sourcePath
|
|
if (-not (Test-Path $fullPath)) {
|
|
continue
|
|
}
|
|
$newerSource = Get-ChildItem -LiteralPath $fullPath -Recurse -File |
|
|
Where-Object { $_.LastWriteTimeUtc -gt $outputTime } |
|
|
Select-Object -First 1
|
|
if ($newerSource) {
|
|
return $true
|
|
}
|
|
}
|
|
|
|
return $false
|
|
}
|
|
|
|
New-Item -ItemType Directory -Force -Path (Join-Path $repoRoot "tools") | Out-Null
|
|
New-Item -ItemType Directory -Force -Path $env:GOCACHE | Out-Null
|
|
if (-not (Test-ToolSourcesAreNewer)) {
|
|
Write-Host "sow-toolkit is up to date."
|
|
exit 0
|
|
}
|
|
|
|
Write-Host "Building sow-toolkit..."
|
|
go build -o $outputPath ./cmd/nwn-tool
|