Skip to content

feat: use active environment across commands#228

Merged
angeloashmore merged 7 commits into
aa/env-dot-envfrom
aa/env-dot-env-consume
Jul 24, 2026
Merged

feat: use active environment across commands#228
angeloashmore merged 7 commits into
aa/env-dot-envfrom
aa/env-dot-env-consume

Conversation

@angeloashmore

@angeloashmore angeloashmore commented Jul 16, 2026

Copy link
Copy Markdown
Member

Resolves:

Description

This PR is a follow-up to #227. #227 gives a way to set the active environment, while this PR connects the active environment to the commands.

Note: --env is deprecated in favor of the env commands. It is now treated as an alias to --repo. We previously validated that --env was valid for the repository. The CLI now simplifies that approach by treating --env as the repository name, falling back to normal 404 reporting if an invalid/incorrect environment name is given.

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-228 env set my-environment
npx prismic@pr-228 status                     # resolves to my-environment
npx prismic@pr-228 status --repo other-repo   # --repo still overrides

Note

Medium Risk
Wide CLI behavior change: default targets may shift to a configured environment, and --env no longer validates against the parent repo’s environment list before API calls.

Overview
Commands that talk to Prismic now default to the project’s active environment (from prismic env set / the framework adapter), falling back to prismic.config.json when none is set. getActiveRepositoryName() centralizes that default for locale, preview, token, and webhook commands; pull, push, sync, and status use the same idea via adapter.getEnvironment().

--env is deprecated: it is treated as an alias for --repo (repository or environment domain), with a runtime warning and omission from help. resolveEnvironment and API-side validation of environment names are removed—invalid domains surface as normal API errors instead.

prismic status prints the config repository separately and shows Environment only when the resolved target differs. Onboarding completion still uses the parent repository from config, not the active environment. Tests that expected --env validation failures were removed.

Reviewed by Cursor Bugbot for commit 01d3d8b. 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.

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>
@angeloashmore angeloashmore changed the title refactor: consume active environment across commands feat: use active environment across commands Jul 16, 2026
@angeloashmore
angeloashmore marked this pull request as ready for review July 16, 2026 20:34
Comment thread src/adapters/index.ts
Comment thread src/commands/status.ts Outdated
angeloashmore and others added 2 commits July 16, 2026 22:29
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>

@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, just one suggestion if it makes sense

Comment thread src/commands/locale-add.ts Outdated
angeloashmore and others added 2 commits July 24, 2026 20:37
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts:
#	test/push.serial.test.ts
#	test/status.serial.test.ts

@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 3 potential issues.

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 93b9b66. Configure here.

Comment thread src/commands/pull.ts Outdated
Comment thread src/commands/pull.ts
Comment thread src/commands/webhook-view.ts Outdated
angeloashmore and others added 2 commits July 24, 2026 21:09
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@angeloashmore
angeloashmore merged commit ea91d5b into aa/env-dot-env Jul 24, 2026
14 of 16 checks passed
@angeloashmore
angeloashmore deleted the aa/env-dot-env-consume branch July 24, 2026 21:17
angeloashmore added a commit that referenced this pull request Jul 24, 2026
* feat: add prismic env commands backed by .env.local

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>

* feat: wire env command and read active environment in clients

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>

* fix: address env review feedback

- 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>

* feat: hide env commands from help and mark them experimental

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

* refactor: remove env file format checks that can never throw

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>

* feat: use active environment across commands (#228)

* 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>

* fix: fall back to config repository name when environment variable is empty

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

---------

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