Skip to content

feat: add --template to render responses with a Go template#285

Open
jongio wants to merge 1 commit into
mainfrom
idea/template-output
Open

feat: add --template to render responses with a Go template#285
jongio wants to merge 1 commit into
mainfrom
idea/template-output

Conversation

@jongio

@jongio jongio commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Adds --template to render a JSON response through a Go text/template. Closes #279.

What it does

Renders the response body with a Go template so you can produce any text shape (custom lines, env files, config snippets) without piping through jq or a separate step.

  • Runs after --query, so you can narrow the response first, then render.
  • Takes precedence over --format.
  • @file loads the template from a file.
  • Helper functions: json, upper, lower, join.
  • Invalid template syntax or a missing @file exits with code 2 before any request is made.
  • A non-JSON body reports a clear error.

Example

azd rest GET "$ARM/subscriptions/$SUB/resourceGroups?api-version=2021-04-01" \
  --query value \
  --template '{{range .}}{{.name}} ({{.location}}){{"\n"}}{{end}}'

Tests

  • Unit: ARM value[] rendering, helper functions, @file load, invalid syntax exits 2, missing file exits 2, non-JSON error.
  • Execute-level: precedence over --format, runs after --query, invalid template exits before any request.

All Go gates pass locally (build, tests, golangci-lint, gosec, govulncheck, deadcode, cspell).

Add a --template flag that renders a JSON response through a Go
text/template, so you can shape output into any text form (custom
lines, env files, config snippets) without piping through jq or a
separate templating step.

The template runs after --query and takes precedence over --format, so
you can narrow the response first and then render exactly what you want.
Use @file to load the template from a file. Helper functions json,
upper, lower, and join cover the common shaping needs.

Invalid template syntax or a missing @file exits with code 2 before any
request is made, so a typo fails fast instead of after a network call.
A non-JSON body reports a clear error.

Closes #279

Co-authored-by: Copilot App <[email protected]>
@jongio jongio added the idea Feature idea from the idea pipeline label Jul 13, 2026
@jongio jongio self-assigned this Jul 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Website Preview

Your PR preview is ready!

📎 Preview URL: https://jongio.github.io/azd-rest/pr/285/

This preview will be automatically cleaned up when the PR is closed.

github-actions Bot added a commit that referenced this pull request Jul 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Test This PR

A preview build (0.5.0-pr285) is ready for testing!

One-Line Install (Recommended)

PowerShell (Windows):

iex "& { $(irm https://raw.githubusercontent.com/jongio/azd-rest/main/scripts/install-pr.ps1) } -PrNumber 285 -Version 0.5.0-pr285"

Bash (macOS/Linux):

curl -fsSL https://raw.githubusercontent.com/jongio/azd-rest/main/scripts/install-pr.sh | bash -s 285 0.5.0-pr285

Uninstall

PowerShell (Windows):

iex "& { $(irm https://raw.githubusercontent.com/jongio/azd-rest/main/scripts/uninstall-pr.ps1) } -PrNumber 285"

Bash (macOS/Linux):

curl -fsSL https://raw.githubusercontent.com/jongio/azd-rest/main/scripts/uninstall-pr.sh | bash -s 285

Build Info:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

idea Feature idea from the idea pipeline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add --template to render responses with a Go template

1 participant