Improve Extract and Publish log readability

Open
#162 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
typescript
Domain
cli

Research direction

Start with tests/integration/all-resource-types/basicv2-test.log, then compare the relevant output paths in src/cli/extract-command.ts, src/services/publish-service.ts, src/cli/publish-command.ts, and src/clients/apim-client.ts. Trace how extraction, publishing, and retries currently log their work. Done means the output covers the proposed grouping, timing, summary, and retry-context improvements without omitting APIs.

Written by the indexing model from the issue text.

Description

Enhancement P2

Summary

Feedback on the integration test logs (tests/integration/all-resource-types/basicv2-test.log) identified several readability and usability improvements for the Extract and Publish command output.

Proposed Improvements

Extract Command (src/cli/extract-command.ts)
  1. Group resources by dependency tier — The "Extracted N Type(s)" lines are a flat list with no visual hierarchy. Group by tier or add blank lines between categories.

  2. List all APIs in the detail section — Currently only APIs with specs/operations are shown (7 of 12). APIs like src-graphql-synthetic and src-a2a-weather-agent are silently omitted. List all APIs even if minimal.

  3. Add elapsed time to the Total lineTotal: 96 resources extracted, 0 errors should include duration (e.g., in 12.3s).

Publish Command (src/services/publish-service.ts, src/cli/publish-command.ts)
  1. Add tier/phase headers — All PUTs are a single flat stream. Since publish executes in dependency tiers, add headers:

    ── Tier 1: Independent resources (16) ──
    PUT namedvalue/src-nv-plain
    ...
    ── Tier 2: Resources with dependencies (2) ──
    PUT backend/src-backend-pool
    
  2. Add elapsed time — No indication of how long publish took or which resources were slow. Add per-tier or total timing.

  3. Enrich the summary41 creates/updates, 0 deletes, 1 skipped could also show total elapsed time and retry count (e.g., "6 retries across 2 resources").

Retry Logging (src/clients/apim-client.ts)
  1. Round retry delay valuesretrying after 1175.1730686888397msretrying in 1.2s

  2. Include resource context in retry warnings — Currently no indication of which resource triggered the retry.

  3. Include attempt number — e.g., (attempt 2/5) so readers know retry progress.

  4. Reduce retry noise in output — Retries interleave with PUT lines and break the flow. Consider grouping retries under their resource or suppressing intermediate retries (show only final outcome with retry count).

Files to Modify

  • src/cli/extract-command.ts — items 1–3
  • src/services/publish-service.ts — items 4–6
  • src/cli/publish-command.ts — items 5–6
  • src/clients/apim-client.ts — items 7–10

Related

Based on review of tests/integration/all-resource-types/basicv2-test.log

Dominant language
TypeScript
Stars
29
Forks
10
Avg merge
1d 14h
Merged PRs (30d)
22

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Azure/apiops-cli

All issues in Azure/apiops-cli

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.