Skip to content

Fix Windows PowerShell 5.1 parse error in publish scripts#200

Open
jimmytacks wants to merge 1 commit into
mainfrom
fix-publish-script-encoding
Open

Fix Windows PowerShell 5.1 parse error in publish scripts#200
jimmytacks wants to merge 1 commit into
mainfrom
fix-publish-script-encoding

Conversation

@jimmytacks
Copy link
Copy Markdown
Collaborator

Summary

publish-release.ps1 (and build-release-bundle.ps1) had em-dash characters (U+2014) in comments and a release-notes string. Windows PowerShell 5.1 reads .ps1 files in the system code page (windows-1252 on most installs) unless the file has a UTF-8 BOM, so the em-dashes parsed as garbage and the script failed with:

Unexpected token 'the' in expression or statement

at the line containing -- the add-in ships against ….

PowerShell 7 / pwsh.exe defaults to UTF-8 even without a BOM, so CI and pwsh-based local testing didn't catch it. Tim's local PS 5.1 did.

Fix

ASCII-ify all dashes (-- instead of ) in both scripts. Writing the files via Set-Content -Encoding utf8 also added a UTF-8 BOM as belt-and-braces.

Test plan

  • Local dry run on Windows PowerShell 5.1 now gets past the parse stage (parser-error gone; only the legitimate preflight checks then run).
  • Tim re-runs .\scripts\publish-release.ps1 -DryRun -SkipSign from a clean main after this lands.

publish-release.ps1 and build-release-bundle.ps1 had em-dash characters
(U+2014, encoded as 0xE2 0x80 0x94 in UTF-8) in comments and a release-
notes string. Windows PowerShell 5.1 reads .ps1 files in the system code
page (windows-1252 on most installs) unless the file has a UTF-8 BOM, so
the em-dashes parsed as garbage and the script failed with:

  Unexpected token 'the' in expression or statement

(at the line containing "-- the add-in ships against...").

PowerShell 7 / pwsh.exe defaults to UTF-8 even without a BOM, so CI and
my own pwsh-based testing didn't catch it. Tim's local PS 5.1 did.

Fix: ASCII-ify the dashes (-- instead of —). Writing the files via
PowerShell's Set-Content -Encoding utf8 also added a UTF-8 BOM as a
belt-and-braces safeguard, but the script body is now ASCII-only either
way.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant