Skip to content

feat: add env commands#227

Merged
angeloashmore merged 8 commits into
mainfrom
aa/env-dot-env
Jul 24, 2026
Merged

feat: add env commands#227
angeloashmore merged 8 commits into
mainfrom
aa/env-dot-env

Conversation

@angeloashmore

@angeloashmore angeloashmore commented Jul 16, 2026

Copy link
Copy Markdown
Member

Resolves:

Description

Adds experimental prismic env commands to manage a project's active environment.

prismic env set <environment>   # Set the active environment
prismic env unset               # Reset to the production environment
prismic env active              # Print the active environment
prismic env list                # List available environments (--json, --repo)

The active environment is written to .env.local under a framework-specific
variable name, so the running site picks it up automatically:

# Next.js
NEXT_PUBLIC_PRISMIC_ENVIRONMENT=my-environment

The API and workflow needs to be validated in real applications before being marked as stable. Until then, all help text includes an @experimental notice.

Checklist

  • A comprehensive Linear ticket, providing sufficient context and details to facilitate the review of the PR, is linked to the PR.
  • If my changes require tests, I added them.
  • If my changes affect backward compatibility, it has been discussed.
  • If my changes require an update to the CONTRIBUTING.md guide, I updated it.

Preview

How to QA 1

npx prismic@pr-227 env list
npx prismic@pr-227 env set my-environment
npx prismic@pr-227 env active
npx prismic@pr-227 env unset

Note

Medium Risk
Wide CLI behavior change (default repo target and deprecated --env) plus .env.local writes; misconfiguration could point sync/push at the wrong environment, though production reset is explicit.

Overview
Adds experimental prismic env (set, unset, active, list) so developers can pick a Prismic environment for the project. The choice is persisted in .env.local via a framework-specific public env var (NEXT_PUBLIC_PRISMIC_ENVIRONMENT, NUXT_PUBLIC_PRISMIC_ENVIRONMENT, PUBLIC_PRISMIC_ENVIRONMENT), and generated Next.js/SvelteKit client templates now resolve repositoryName from that variable before prismic.config.json.

CLI commands that target a repo (pull, push, sync, status, locale/preview/token/webhook, etc.) default to the active environment when --repo is omitted. --env remains as a deprecated alias for --repo with a warning. resolveEnvironment is removed in favor of listing user environments for env set validation and using the stored domain directly elsewhere.

Reviewed by Cursor Bugbot for commit fdb2078. Bugbot is set up for automated code reviews on this repo. Configure here.

Footnotes

  1. Please use these labels when submitting a review:
    ❓ #ask: Ask a question.
    💡 #idea: Suggest an idea.
    ⚠️ #issue: Strongly suggest a change.
    🎉 #nice: Share a compliment.

angeloashmore and others added 2 commits July 16, 2026 19:13
Add `prismic env` commands to manage a project's active environment.
The active environment is stored in .env.local under a framework-specific
variable name (e.g. NEXT_PUBLIC_PRISMIC_ENVIRONMENT), so the running site
reads it automatically.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Register `prismic env` in the command router and update the generated
prismic.io client templates to resolve repositoryName from the active
environment variable, falling back to the configured repository name.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@angeloashmore angeloashmore changed the title feat: add prismic env commands backed by .env.local feat: persist environment selection Jul 16, 2026
@angeloashmore angeloashmore changed the title feat: persist environment selection feat: add env commands Jul 16, 2026
@angeloashmore
angeloashmore marked this pull request as ready for review July 16, 2026 20:34
Comment thread src/adapters/nuxt.ts
Comment thread src/commands/env-list.ts Outdated
Comment thread src/lib/prismic/environments.ts
Comment thread src/adapters/index.ts
Comment thread src/adapters/nextjs.templates.ts Outdated
Comment thread src/lib/file.ts
- getEnvironment surfaces corrupt .env.local instead of treating it as unset
- env list marks the active environment only for the project's own repo
- setEnvFileVar/unsetEnvFileVar update every occurrence of a key

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@lihbr lihbr left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, tiny suggestion

Comment thread src/lib/file.ts Outdated
angeloashmore and others added 3 commits July 24, 2026 20:03
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Node's util.parseEnv is a best-effort parser with no error path for
string input, so the "verify the format" calls were dead code.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Comment thread src/adapters/nextjs.templates.ts Outdated
Comment thread src/lib/file.ts
Comment thread src/commands/env-list.ts Outdated
* refactor: consume active environment across commands

Migrate the existing commands (locale, preview, token, webhook, pull,
push, status, sync) to resolve the target repository from the persisted
active environment. Deprecate the per-command --env flag, making it an
alias for --repo, and remove resolveEnvironment along with its API-side
validation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: label status Environment line from the resolved repo

Show an explicit --repo target on the status Environment line, not just
--env or the active environment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat: hide deprecated options from help and warn on use

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: record onboarding steps on the production repository

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: resolve the repository lazily so --repo works without a framework

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

There are 3 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit ea91d5b. Configure here.

Comment thread src/commands/pull.ts
Comment thread src/adapters/index.ts
… empty

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@angeloashmore
angeloashmore merged commit faee425 into main Jul 24, 2026
13 of 16 checks passed
@angeloashmore
angeloashmore deleted the aa/env-dot-env branch July 24, 2026 21:27
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.

2 participants