scripts(schedjs): фаза all — web-логин + trust + verify одной командой (task:3130)

This commit is contained in:
2026-09-20 23:55:04 +03:00
parent 28c70c7093
commit bb2b76b8b0

View File

@@ -21,7 +21,7 @@
[CmdletBinding()] [CmdletBinding()]
param( param(
[ValidateSet('github', 'npm', 'verify')] [ValidateSet('github', 'login', 'npm', 'verify', 'all')]
[string]$Phase = 'github', [string]$Phase = 'github',
[string]$Repo = 'schedjs/schedjs', [string]$Repo = 'schedjs/schedjs',
@@ -79,6 +79,17 @@ function Phase-GitHub {
Say "OK: environment готов (секреты не нужны — OIDC)" Say "OK: environment готов (секреты не нужны — OIDC)"
} }
function Ensure-WebLogin {
$npmrc = Join-Path $env:USERPROFILE '.npmrc'
$content = if (Test-Path $npmrc) { Get-Content $npmrc -Raw } else { '' }
if ($content -notmatch 'registry\.npmjs\.org/:_authToken=npm_') { Say '== .npmrc: automation-токена нет — логин уже web-сессия (или токен иной формы)'; return }
Say '== .npmrc: automation-токен npm_… — для trust нужна web-сессия. Откроется браузер, введи код 2FA.'
$old = $ErrorActionPreference; $ErrorActionPreference = 'Continue'
try { & npm login --auth-type=web } finally { $ErrorActionPreference = $old }
if ($LASTEXITCODE -ne 0) { Fail "npm login завершился с кодом $LASTEXITCODE — повтори вручную: npm login --auth-type=web" }
Say ' логин ок'
}
function Assert-NpmAuth { function Assert-NpmAuth {
$npmver = (Invoke-Npm @('-v')).Text.Trim() $npmver = (Invoke-Npm @('-v')).Text.Trim()
Say "== npm $npmver (нужно >= 11.15.0)" Say "== npm $npmver (нужно >= 11.15.0)"
@@ -109,6 +120,7 @@ function Assert-NpmAuth {
} }
function Phase-Npm { function Phase-Npm {
Ensure-WebLogin
Assert-NpmAuth Assert-NpmAuth
Say "== trusted publisher: $($pkgs.Count) пакетов @schedjs/*" Say "== trusted publisher: $($pkgs.Count) пакетов @schedjs/*"
$ok = @(); $bad = @() $ok = @(); $bad = @()
@@ -145,6 +157,8 @@ function Phase-Verify {
switch ($Phase) { switch ($Phase) {
'github' { Phase-GitHub } 'github' { Phase-GitHub }
'login' { Ensure-WebLogin }
'npm' { Phase-Npm } 'npm' { Phase-Npm }
'verify' { Phase-Verify } 'verify' { Phase-Verify }
'all' { Phase-Npm; Say ''; Phase-Verify }
} }