scripts(schedjs): фаза all — web-логин + trust + verify одной командой (task:3130)
This commit is contained in:
@@ -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 }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user