Fix : widows giea 1
This commit is contained in:
@@ -169,12 +169,26 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: '22'
|
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
|
- name: Confirmer la version de Node
|
||||||
shell: powershell
|
shell: powershell
|
||||||
run: |
|
run: |
|
||||||
$major = [int](& node -p 'process.versions.node.split(".")[0]')
|
$raw = (& node --version)
|
||||||
Write-Host "Node $(& node -v)"
|
if ($raw -match '^v(\d+)\.') { $major = [int]$Matches[1] } else { $major = 0 }
|
||||||
if ($major -lt 22) { throw "Node 22+ attendu, trouvé $major" }
|
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 :
|
# 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
|
# 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))
|
$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair))
|
||||||
Invoke-WebRequest -Uri $url -Headers @{ Authorization = "Basic $auth" } `
|
Invoke-WebRequest -Uri $url -Headers @{ Authorization = "Basic $auth" } `
|
||||||
-OutFile agent.cjs -UseBasicParsing
|
-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
|
- name: Exécuter le diagnostic
|
||||||
shell: powershell
|
shell: powershell
|
||||||
@@ -221,7 +235,7 @@ jobs:
|
|||||||
# On valide que le diagnostic s'est déroulé, pas son verdict.
|
# On valide que le diagnostic s'est déroulé, pas son verdict.
|
||||||
foreach ($marker in @('obs-websocket', 'powershell')) {
|
foreach ($marker in @('obs-websocket', 'powershell')) {
|
||||||
if ($out -notmatch [regex]::Escape($marker)) {
|
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.'
|
Write-Host 'Bundle fonctionnel sous Windows.'
|
||||||
|
|||||||
@@ -69,7 +69,13 @@ Write-Host ''
|
|||||||
$nodeMajor = 0
|
$nodeMajor = 0
|
||||||
$nodeCmd = Get-Command node -ErrorAction SilentlyContinue
|
$nodeCmd = Get-Command node -ErrorAction SilentlyContinue
|
||||||
if ($nodeCmd) {
|
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) {
|
if ($nodeMajor -lt 22) {
|
||||||
|
|||||||
Reference in New Issue
Block a user