Fix : widows giea 1
This commit is contained in:
@@ -169,12 +169,26 @@ jobs:
|
||||
with:
|
||||
node-version: '22'
|
||||
|
||||
# Deux pièges de Windows PowerShell 5.1 sont à l'œuvre dans les étapes
|
||||
# `shell: powershell` ci-dessous, et valent d'être connus avant de les
|
||||
# modifier :
|
||||
#
|
||||
# 1. Les guillemets doubles imbriqués dans un argument passé à un
|
||||
# exécutable natif sont perdus. `node -p 'x.split(".")[0]'` arrive
|
||||
# donc comme `x.split(.)[0]` et lève une SyntaxError. On lit ici
|
||||
# `node --version` et on découpe côté PowerShell : rien ne traverse
|
||||
# cette frontière.
|
||||
# 2. Le runner écrit ce bloc dans un .ps1 sans BOM, que PowerShell 5.1
|
||||
# relit dans la page de codes ANSI. Tout caractère non-ASCII y devient
|
||||
# illisible (« trouvé » s'affichait « trouvǸ »). Les chaînes affichées
|
||||
# restent donc en ASCII — les commentaires, eux, ne sont jamais rendus.
|
||||
- name: Confirmer la version de Node
|
||||
shell: powershell
|
||||
run: |
|
||||
$major = [int](& node -p 'process.versions.node.split(".")[0]')
|
||||
Write-Host "Node $(& node -v)"
|
||||
if ($major -lt 22) { throw "Node 22+ attendu, trouvé $major" }
|
||||
$raw = (& node --version)
|
||||
if ($raw -match '^v(\d+)\.') { $major = [int]$Matches[1] } else { $major = 0 }
|
||||
Write-Host "Node $raw"
|
||||
if ($major -lt 22) { throw "Node 22+ requis, version lue : $raw" }
|
||||
|
||||
# Le script d'installation Windows n'est exécutable que sur Windows :
|
||||
# ce contrôle de syntaxe est la seule barrière avant qu'il n'atterrisse
|
||||
@@ -205,7 +219,7 @@ jobs:
|
||||
$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair))
|
||||
Invoke-WebRequest -Uri $url -Headers @{ Authorization = "Basic $auth" } `
|
||||
-OutFile agent.cjs -UseBasicParsing
|
||||
Write-Host "Bundle récupéré : $((Get-Item agent.cjs).Length) octets"
|
||||
Write-Host "Bundle : $((Get-Item agent.cjs).Length) octets"
|
||||
|
||||
- name: Exécuter le diagnostic
|
||||
shell: powershell
|
||||
@@ -221,7 +235,7 @@ jobs:
|
||||
# On valide que le diagnostic s'est déroulé, pas son verdict.
|
||||
foreach ($marker in @('obs-websocket', 'powershell')) {
|
||||
if ($out -notmatch [regex]::Escape($marker)) {
|
||||
throw "Diagnostic incomplet : « $marker » absent de la sortie"
|
||||
throw "Diagnostic incomplet : marqueur $marker absent de la sortie"
|
||||
}
|
||||
}
|
||||
Write-Host 'Bundle fonctionnel sous Windows.'
|
||||
|
||||
@@ -69,7 +69,13 @@ Write-Host ''
|
||||
$nodeMajor = 0
|
||||
$nodeCmd = Get-Command node -ErrorAction SilentlyContinue
|
||||
if ($nodeCmd) {
|
||||
$nodeMajor = [int]((& node -p 'process.versions.node.split(".")[0]') 2>$null)
|
||||
# On lit `node --version` plutôt que d'évaluer une expression JavaScript.
|
||||
# PowerShell 5.1 perd les guillemets doubles imbriqués quand il passe un
|
||||
# argument à un exécutable natif : `node -p 'x.split(".")[0]'` arrive côté
|
||||
# Node comme `x.split(.)[0]`, qui lève une SyntaxError. Le majeur valait
|
||||
# alors 0 et le script réinstallait Node sur une machine déjà équipée.
|
||||
$nodeRaw = (& node --version 2>$null)
|
||||
if ($nodeRaw -match '^v(\d+)\.') { $nodeMajor = [int]$Matches[1] }
|
||||
}
|
||||
|
||||
if ($nodeMajor -lt 22) {
|
||||
|
||||
Reference in New Issue
Block a user