fix(prereq-check): parse az version via JSON on PowerShell#131
Merged
Conversation
PowerShell's native-command argument parser strips inner double-quotes from `--query '"azure-cli"'`, leaving JMESPath with an invalid unquoted hyphenated identifier. The CLI returns nothing, the script falls back to 'unknown', and the version compare flags az as OUTDATED even when it is current. Switch to `az version -o json | ConvertFrom-Json` and read the `azure-cli` property natively. This avoids the quoting issue entirely and keeps the TSV contract identical to check-tools.sh. Fixes #130
Contributor
|
sendtoshailesh
approved these changes
May 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #130.
Problem
On Windows / PowerShell,
prereq-checkreportsazasOUTDATED unknowneven when a current Azure CLI is installed, blocking Git-Ape onboarding.PowerShell's native-command argument parser strips the inner double-quotes from:
The CLI ends up receiving the JMESPath query
azure-cli(no quotes), which is an invalid identifier because of the hyphen — JMESPath fails to parse,stdoutis empty, and the script falls back to the literal stringunknown.The POSIX sibling
check-tools.shis unaffected because POSIX shells preserve inner quotes.Fix
Replace the JMESPath query with native PowerShell JSON parsing:
This sidesteps the quoting issue entirely. The TSV contract emitted by the script is unchanged, so
prereq-check's SKILL.md consumer keeps working without modification.Verification
Local run on macOS (pwsh 7.x):
node scripts/validate-structure.js→ 0 errors, no new warnings.