Skip to content

Add typed JSON output to theme init - #8684

Open
gonzaloriestra wants to merge 1 commit into
gonzalo/json-theme-packagefrom
gonzalo/json-theme-init
Open

gonzaloriestra wants to merge 1 commit into
gonzalo/json-theme-packagefrom
gonzalo/json-theme-init

Conversation

@gonzaloriestra

@gonzaloriestra gonzaloriestra commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

WHY are these changes introduced?

theme init clones a theme and optionally creates AI instructions without returning a typed result for scripts.

Part of shop/issues-develop#23694.

WHAT is this pull request doing?

Expose the destination, repository, latest-release option, selected AI instructions, and instruction file paths as JSON. Keep the existing prompts and cleanup behavior, report task progress and copy-fallback warnings on stderr, and emit the result only after setup completes.

Fix the existing --latest clone failure by disabling shallow cloning when fetching release tags.

Normal output:

Cloning https://github.com/Shopify/skeleton-theme.git into /themes/example

Matching JSON example when AI setup is skipped:

{
  "path": "/themes/example",
  "repoUrl": "https://github.com/Shopify/skeleton-theme.git",
  "latest": false,
  "aiInstructions": null,
  "instructionFiles": []
}

How to manually test your changes?

pnpm shopify theme init example
pnpm shopify theme init example --json
pnpm shopify theme init example --clone-url https://github.com/Shopify/dawn.git --latest --json
pnpm shopify theme init --json-schema

Checklist

  • I've considered possible cross-platform impacts (Mac, Linux, Windows)
  • I've considered possible documentation changes
  • I've considered analytics changes to measure impact
  • A single changeset for all theme migrations is added in the last PR, #8682.

@gonzaloriestra
gonzaloriestra added this pull request to stack #8673 September 28, 2026 09:53
@github-actions github-actions Bot added the no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. label Sep 28, 2026
@gonzaloriestra
gonzaloriestra marked this pull request as ready for review September 28, 2026 10:17
@gonzaloriestra
gonzaloriestra requested review from a team as code owners September 28, 2026 10:17
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch 2 times, most recently from 15928b5 to af38492 Compare September 28, 2026 11:39
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch 2 times, most recently from 9c90616 to a0861a7 Compare September 29, 2026 10:28
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch 2 times, most recently from 1742d91 to eced348 Compare September 29, 2026 13:44
@gonzaloriestra
gonzaloriestra force-pushed the gonzalo/json-theme-init branch from 74e4949 to 2c8e408 Compare October 1, 2026 08:52
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Differences in type declarations

We detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:

  • Some seemingly private modules might be re-exported through public modules.
  • If the branch is behind main you might see odd diffs, rebase main into this branch.

New type declarations

We found no new type declarations in this PR

Existing type declarations

packages/cli-kit/dist/public/node/base-command.d.ts
@@ -35,6 +35,7 @@ declare abstract class BaseCommand extends Command {
         argv: string[];
     }>;
     protected environmentsFilename(): string | undefined;
+    protected validateNonTTYFlags(flags: FlagOutput): void;
     protected failMissingNonTTYFlags(flags: FlagOutput, requiredFlags: string[]): void;
     private failMissingNonTTYFlagRequirements;
     private applicableNonTTYFlagRequirements;

This branch has not been deployed

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

Labels

no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. shopify.dev preview

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant