134 lines
4.9 KiB
PowerShell
134 lines
4.9 KiB
PowerShell
Set-StrictMode -Version Latest
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
# Legacy compatibility helper only.
|
|
# Active SDT workflows and shell bootstrap now use Python scripts.
|
|
|
|
function Clear-SdtProxyEnv {
|
|
Remove-Item Env:HTTP_PROXY -ErrorAction SilentlyContinue
|
|
Remove-Item Env:HTTPS_PROXY -ErrorAction SilentlyContinue
|
|
Remove-Item Env:ALL_PROXY -ErrorAction SilentlyContinue
|
|
Remove-Item Env:http_proxy -ErrorAction SilentlyContinue
|
|
Remove-Item Env:https_proxy -ErrorAction SilentlyContinue
|
|
Remove-Item Env:all_proxy -ErrorAction SilentlyContinue
|
|
Remove-Item Env:GIT_HTTP_PROXY -ErrorAction SilentlyContinue
|
|
Remove-Item Env:GIT_HTTPS_PROXY -ErrorAction SilentlyContinue
|
|
Remove-Item Env:PIP_NO_INDEX -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
function Test-SdtConfigExists {
|
|
param([string]$Path)
|
|
if (Test-Path (Join-Path $Path "devtool.json")) {
|
|
return $true
|
|
}
|
|
$sdtConfigs = Get-ChildItem -Path $Path -Filter "sdtconfig-*.json" -File -ErrorAction SilentlyContinue
|
|
return ($null -ne $sdtConfigs) -and ($sdtConfigs.Count -gt 0)
|
|
}
|
|
|
|
function Resolve-SdtRepoRoot {
|
|
param([string]$StartPath)
|
|
|
|
$candidateStarts = @()
|
|
if (-not [string]::IsNullOrWhiteSpace($StartPath)) {
|
|
$candidateStarts += $StartPath
|
|
}
|
|
$cwd = (Get-Location).Path
|
|
if (-not [string]::IsNullOrWhiteSpace($cwd) -and ($candidateStarts -notcontains $cwd)) {
|
|
$candidateStarts += $cwd
|
|
}
|
|
|
|
$override = $env:SDT_REPO_ROOT
|
|
if ([string]::IsNullOrWhiteSpace($override)) {
|
|
$override = $env:JOURNAL_REPO_ROOT # backward compatibility
|
|
}
|
|
if (-not [string]::IsNullOrWhiteSpace($override)) {
|
|
$overridePath = [System.IO.Path]::GetFullPath($override)
|
|
if (Test-SdtConfigExists -Path $overridePath) {
|
|
return $overridePath
|
|
}
|
|
}
|
|
|
|
foreach ($start in $candidateStarts) {
|
|
$cursor = [System.IO.Path]::GetFullPath($start)
|
|
while (-not [string]::IsNullOrWhiteSpace($cursor)) {
|
|
if (Test-SdtConfigExists -Path $cursor) {
|
|
return $cursor
|
|
}
|
|
$parent = [System.IO.Directory]::GetParent($cursor)
|
|
if ($null -eq $parent -or $parent.FullName -eq $cursor) {
|
|
break
|
|
}
|
|
$cursor = $parent.FullName
|
|
}
|
|
}
|
|
|
|
if (Get-Command git -ErrorAction SilentlyContinue) {
|
|
foreach ($start in $candidateStarts) {
|
|
try {
|
|
$gitRoot = & git -C $start rev-parse --show-toplevel 2>$null
|
|
if ($? -and -not [string]::IsNullOrWhiteSpace($gitRoot)) {
|
|
return [System.IO.Path]::GetFullPath($gitRoot.Trim())
|
|
}
|
|
}
|
|
catch {}
|
|
}
|
|
}
|
|
|
|
throw "Could not locate repository root. Ensure a project config (sdtconfig-*.json or devtool.json) exists in the project root."
|
|
}
|
|
|
|
function Initialize-SdtDotnetEnv {
|
|
param([Parameter(Mandatory = $true)][string]$RepoRoot)
|
|
|
|
$dotnetCliHome = Join-Path $RepoRoot ".dotnet_home"
|
|
$nugetPackages = Join-Path $RepoRoot ".nuget\packages"
|
|
$nugetHttpCachePath = Join-Path $RepoRoot ".nuget\http-cache"
|
|
|
|
$env:DOTNET_CLI_HOME = $dotnetCliHome
|
|
$env:NUGET_PACKAGES = $nugetPackages
|
|
$env:NUGET_HTTP_CACHE_PATH = $nugetHttpCachePath
|
|
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = "1"
|
|
$env:DOTNET_ADD_GLOBAL_TOOLS_TO_PATH = "0"
|
|
$env:DOTNET_GENERATE_ASPNET_CERTIFICATE = "0"
|
|
$env:DOTNET_CLI_TELEMETRY_OPTOUT = "1"
|
|
$env:NUGET_CERT_REVOCATION_MODE = "offline"
|
|
|
|
New-Item -ItemType Directory -Force -Path $dotnetCliHome, $nugetPackages, $nugetHttpCachePath | Out-Null
|
|
}
|
|
|
|
function Initialize-SdtPipEnv {
|
|
param([Parameter(Mandatory = $true)][string]$RepoRoot)
|
|
|
|
$pipCacheDir = Join-Path $RepoRoot ".pip\cache"
|
|
$pipTempDir = Join-Path $RepoRoot ".tmp\pip-temp"
|
|
|
|
$env:PIP_CACHE_DIR = $pipCacheDir
|
|
$env:TEMP = $pipTempDir
|
|
$env:TMP = $pipTempDir
|
|
$env:PIP_DISABLE_PIP_VERSION_CHECK = "1"
|
|
$env:PIP_DEFAULT_TIMEOUT = "30"
|
|
$env:PIP_RETRIES = "2"
|
|
|
|
New-Item -ItemType Directory -Force -Path $pipCacheDir, $pipTempDir | Out-Null
|
|
}
|
|
|
|
function Initialize-SdtHuggingFaceEnv {
|
|
param([Parameter(Mandatory = $true)][string]$RepoRoot)
|
|
|
|
$hfHome = Join-Path $RepoRoot ".cache\huggingface"
|
|
$hfHubCache = Join-Path $hfHome "hub"
|
|
|
|
$env:HF_HOME = $hfHome
|
|
$env:HUGGINGFACE_HUB_CACHE = $hfHubCache
|
|
$env:HF_HUB_DISABLE_SYMLINKS_WARNING = "1"
|
|
|
|
New-Item -ItemType Directory -Force -Path $hfHubCache | Out-Null
|
|
}
|
|
|
|
# Backward-compatible aliases (legacy script calls)
|
|
Set-Alias -Name Clear-JournalProxyEnv -Value Clear-SdtProxyEnv -Scope Script
|
|
Set-Alias -Name Resolve-JournalRepoRoot -Value Resolve-SdtRepoRoot -Scope Script
|
|
Set-Alias -Name Initialize-JournalDotnetEnv -Value Initialize-SdtDotnetEnv -Scope Script
|
|
Set-Alias -Name Initialize-JournalPipEnv -Value Initialize-SdtPipEnv -Scope Script
|
|
Set-Alias -Name Initialize-JournalHuggingFaceEnv -Value Initialize-SdtHuggingFaceEnv -Scope Script
|