diff --git a/.gitignore b/.gitignore index d56adc3..01f1792 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,11 @@ dist/ slice_wrap_head_*.png *.blend1 +# Secrets (ne jamais commiter) +.secret +*.secret +token.xml + # Éditeurs / outils locaux .vscode/ .idea/ diff --git a/tools/New-GiteaRelease.ps1 b/tools/New-GiteaRelease.ps1 index 76ab239..94c7874 100644 --- a/tools/New-GiteaRelease.ps1 +++ b/tools/New-GiteaRelease.ps1 @@ -11,8 +11,11 @@ (une pièce jointe du même nom est remplacée). Notes de version : -Notes, sinon l'entrée de la version dans la section « Historique » de CLAUDE.md. - Jeton : variable d'environnement GITEA_TOKEN (Gitea > Paramètres > Applications > jeton avec la portée - « repository : lecture et écriture »), sinon il est demandé (saisie masquée). + Jeton (Gitea > Paramètres > Applications, portée « repository : lecture et écriture »), cherché dans l'ordre : + 1. variable d'environnement GITEA_TOKEN ; + 2. %APPDATA%\Gitea\token.xml, chiffré par Windows (DPAPI) : seul votre compte, sur ce PC, peut le lire. + Pour le créer : Read-Host "Jeton Gitea" -AsSecureString | Export-Clixml "$env:APPDATA\Gitea\token.xml" + 3. sinon il est demandé (saisie masquée), avec proposition de l'enregistrer dans ce fichier. .EXAMPLE .\tools\New-GiteaRelease.ps1 -DryRun # montre ce qui serait fait, ne publie rien @@ -111,10 +114,20 @@ if ($DryRun) { } # ------------------------------------------------------------------ jeton +# Ordre : variable GITEA_TOKEN, puis fichier chiffré par Windows (DPAPI), sinon saisie masquée +$tokenFile = Join-Path $env:APPDATA 'Gitea\token.xml' $token = $env:GITEA_TOKEN +if (-not $token -and (Test-Path $tokenFile)) { + $token = [Net.NetworkCredential]::new('', (Import-Clixml $tokenFile)).Password +} if (-not $token) { $sec = Read-Host "Jeton Gitea (portée repository, lecture/écriture)" -AsSecureString $token = [Net.NetworkCredential]::new('', $sec).Password + if ($token -and (Read-Host "L'enregistrer chiffré dans $tokenFile ? (o/N)") -match '^[oOyY]') { + New-Item -ItemType Directory -Force (Split-Path $tokenFile) | Out-Null + $sec | Export-Clixml $tokenFile + Write-Host "Jeton enregistré (lisible seulement par votre compte Windows sur ce PC)" + } } if (-not $token) { throw "Jeton Gitea manquant" } $headers = @{ Authorization = "token $token"; Accept = 'application/json' }