scripts(schedjs): фаза all — web-логин + trust + verify одной командой (task:3130)
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[ValidateSet('github', 'npm', 'verify')]
|
||||
[ValidateSet('github', 'login', 'npm', 'verify', 'all')]
|
||||
[string]$Phase = 'github',
|
||||
|
||||
[string]$Repo = 'schedjs/schedjs',
|
||||
@@ -79,6 +79,17 @@ function Phase-GitHub {
|
||||
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 {
|
||||
$npmver = (Invoke-Npm @('-v')).Text.Trim()
|
||||
Say "== npm $npmver (нужно >= 11.15.0)"
|
||||
@@ -109,6 +120,7 @@ function Assert-NpmAuth {
|
||||
}
|
||||
|
||||
function Phase-Npm {
|
||||
Ensure-WebLogin
|
||||
Assert-NpmAuth
|
||||
Say "== trusted publisher: $($pkgs.Count) пакетов @schedjs/*"
|
||||
$ok = @(); $bad = @()
|
||||
@@ -145,6 +157,8 @@ function Phase-Verify {
|
||||
|
||||
switch ($Phase) {
|
||||
'github' { Phase-GitHub }
|
||||
'login' { Ensure-WebLogin }
|
||||
'npm' { Phase-Npm }
|
||||
'verify' { Phase-Verify }
|
||||
'all' { Phase-Npm; Say ''; Phase-Verify }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user