Skip to content

[cli] refactor Output usage#12305

Merged
EndangeredMassa merged 43 commits intomainfrom
smassa/refactor-output
Oct 28, 2024
Merged

[cli] refactor Output usage#12305
EndangeredMassa merged 43 commits intomainfrom
smassa/refactor-output

Conversation

@EndangeredMassa
Copy link
Contributor

@EndangeredMassa EndangeredMassa commented Oct 17, 2024

On the path towards making the CLI entrypoint more testable, this PR refactors usage of Output to be less interconnected to the system. It is now wrapped by a singleton that can be modified (if necessary) as the program flows.

This allows other contexts to use the same singleton after the initial CLI logic parses the args and updates the values on the singleton. The removal of this direct coupling allows future refactors of the Vercel CLI entrypoint that we'd need to do in order to write unit tests for that logic.

The output instance is no longer coupled to the client instance.


Primary Diff

There are a lot of changes in this PR, but most of them are adjusting the call sites of the output methods. The core changes are:

Test setup changes:

Loosened some regex to accmmomodate line breaks:

Updated some snapshots that had color in them to no longer have color:


Consumer-facing Change

Instead of:

client.output.debug('some message');

Use:

import output from './output-manager';
// ...
output.debug('some message');

Card: https://linear.app/vercel/issue/ZERO-2738/refactor-tangled-output-from-client-in-vercel-cli

@changeset-bot
Copy link

changeset-bot bot commented Oct 17, 2024

🦋 Changeset detected

Latest commit: a06c5c3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
vercel Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@EndangeredMassa EndangeredMassa marked this pull request as ready for review October 17, 2024 19:19
erikareads
erikareads previously approved these changes Oct 17, 2024
Copy link
Contributor

@erikareads erikareads left a comment

Choose a reason for hiding this comment

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

Are there any other places where we're creating a new Output class?

jeffsee55
jeffsee55 previously approved these changes Oct 17, 2024
onsclom
onsclom previously approved these changes Oct 17, 2024
@EndangeredMassa
Copy link
Contributor Author

Are there any other places where we're creating a new Output class?

Do you have an API in mind for that mockClient will do with output? Will it no longer initialize it within it's contstructor?

The other invocation are all in tests. I dismissed the need to touch them for this PR because the tests all pass, but I'll take a closer look.

@EndangeredMassa EndangeredMassa dismissed stale reviews from onsclom and jeffsee55 via ca2382f October 21, 2024 20:32
@EndangeredMassa
Copy link
Contributor Author

I added these notes the primary diff section of the PR description.

Loosened some regex to accmmomodate line breaks:

Updated some snapshots that had color in them to no longer have color:

@EndangeredMassa EndangeredMassa requested a review from trek October 28, 2024 18:54
@EndangeredMassa EndangeredMassa merged commit 9874d73 into main Oct 28, 2024
@EndangeredMassa EndangeredMassa deleted the smassa/refactor-output branch October 28, 2024 20:59
onsclom pushed a commit that referenced this pull request Oct 29, 2024
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## vercel@37.13.0

### Minor Changes

- Add telemetry for `vercel logs`
([#12386](#12386))

- Add telemetry for `vercel env pull`
([#12368](#12368))

- add telemetry for `vercel env rm`
([#12384](#12384))

- [cli] add subcommand tracking for `dns` group
([#12375](#12375))

- [cli] add telemetry for `vercel certs ls`
([#12383](#12383))

- [cli] add telemetry tracking to vercel inspect
([#12367](#12367))

- Add telemetry for `vercel certs remove`
([#12394](#12394))

- Add telemetry for `vercel integration list`
([#12404](#12404))

- add telemetry tracking to `env add`
([#12357](#12357))

- track standard environments in `vc env add`
([#12385](#12385))

- [cli] add telemetry for `vercel target ls`
([#12352](#12352))

- [cli] add telemetry tracking for `vercel domains ls`
([#12400](#12400))

- [cli] add `VERCEL_ENV` and `VERCEL` to process to simulate runtime
([#12358](#12358))

- Add telemetry for `vercel domains move`
([#12411](#12411))

- [cli] add telemetry tracking to `git connect` and `git disconnect`
([#12373](#12373))

- Add telemetry to `vercel domains buy`
([#12413](#12413))

- [cli] add telemetry tracking to `project list`
([#12339](#12339))

- Add telemetry for `vercel domains add`
([#12409](#12409))

- Add telemetry to `vercel domains rm`
([#12410](#12410))

- Add telemetry for `vercel list`
([#12364](#12364))

- [cli] add subcommand tracking for `integration` group
([#12377](#12377))

- Add telemetry for `vercel certs add`
([#12391](#12391))

- [cli] add subcommand tracking for `domains` group
([#12374](#12374))

- [cli] add telemetry tracking to `project add`
([#12340](#12340))

- Add telemetry for `vercel integration open`
([#12408](#12408))

- Add telemetry for `vercel init`
([#12371](#12371))

- [cli] add subcommand tracking for `integration` group
([#12377](#12377))

- [cli] add telemetry tracking for `vercel dns import`
([#12379](#12379))

- [cli] add telemetry for `vercel dns ls`
([#12380](#12380))

- Add telemetry for `vercel env ls`
([#12392](#12392))

- Add telemetry for `vercel bisect`
([#12362](#12362))

- [cli] add telemetry for `vercel dns remove`
([#12381](#12381))

- Add telemetry for `vercel integration add`
([#12406](#12406))

- [cli] add telemetry tracking for vercel dev invocations
([#12349](#12349))

- [cli] add subcommand tracking for `certs` group
([#12376](#12376))

- [cli] add telemetry for `vercel redeploy`
([#12353](#12353))

- [cli] add telemetry for `vercel domains inspect`
([#12407](#12407))

- Add telemetry for `vercel certs issue`
([#12401](#12401))

- Add telemetry for `vercel link`
([#12360](#12360))

### Patch Changes

- Remove stray file
([#12363](#12363))

- add metrics to dns add
([#12414](#12414))

- Add telemetry to the `teams` subcommands. Telemetry collection is not
currently enabled and when it is, will be a major version bump for the
CLI. ([#12346](#12346))

- add telemetry to `vc pull`
([#12387](#12387))

- [cli] refactor Output usage
([#12305](#12305))

- extract pull invocation from build
([#12372](#12372))

- extract vc pull logic from entrypoint
([#12378](#12378))

- Updated dependencies
\[[`13bb443f2b0791c7bd402447fcb540cffd0b6eae`](13bb443)]:
    -   @vercel/remix-builder@2.2.13

## @vercel/remix-builder@2.2.13

### Patch Changes

- Update `@remix-run/dev` fork to v2.13.1
([#12334](#12334))

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
QuietCraftsmanship pushed a commit to QuietCraftsmanship/Vercel that referenced this pull request Jul 6, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## vercel@37.13.0

### Minor Changes

- Add telemetry for `vercel logs`
([#12386](vercel/vercel#12386))

- Add telemetry for `vercel env pull`
([#12368](vercel/vercel#12368))

- add telemetry for `vercel env rm`
([#12384](vercel/vercel#12384))

- [cli] add subcommand tracking for `dns` group
([#12375](vercel/vercel#12375))

- [cli] add telemetry for `vercel certs ls`
([#12383](vercel/vercel#12383))

- [cli] add telemetry tracking to vercel inspect
([#12367](vercel/vercel#12367))

- Add telemetry for `vercel certs remove`
([#12394](vercel/vercel#12394))

- Add telemetry for `vercel integration list`
([#12404](vercel/vercel#12404))

- add telemetry tracking to `env add`
([#12357](vercel/vercel#12357))

- track standard environments in `vc env add`
([#12385](vercel/vercel#12385))

- [cli] add telemetry for `vercel target ls`
([#12352](vercel/vercel#12352))

- [cli] add telemetry tracking for `vercel domains ls`
([#12400](vercel/vercel#12400))

- [cli] add `VERCEL_ENV` and `VERCEL` to process to simulate runtime
([#12358](vercel/vercel#12358))

- Add telemetry for `vercel domains move`
([#12411](vercel/vercel#12411))

- [cli] add telemetry tracking to `git connect` and `git disconnect`
([#12373](vercel/vercel#12373))

- Add telemetry to `vercel domains buy`
([#12413](vercel/vercel#12413))

- [cli] add telemetry tracking to `project list`
([#12339](vercel/vercel#12339))

- Add telemetry for `vercel domains add`
([#12409](vercel/vercel#12409))

- Add telemetry to `vercel domains rm`
([#12410](vercel/vercel#12410))

- Add telemetry for `vercel list`
([#12364](vercel/vercel#12364))

- [cli] add subcommand tracking for `integration` group
([#12377](vercel/vercel#12377))

- Add telemetry for `vercel certs add`
([#12391](vercel/vercel#12391))

- [cli] add subcommand tracking for `domains` group
([#12374](vercel/vercel#12374))

- [cli] add telemetry tracking to `project add`
([#12340](vercel/vercel#12340))

- Add telemetry for `vercel integration open`
([#12408](vercel/vercel#12408))

- Add telemetry for `vercel init`
([#12371](vercel/vercel#12371))

- [cli] add subcommand tracking for `integration` group
([#12377](vercel/vercel#12377))

- [cli] add telemetry tracking for `vercel dns import`
([#12379](vercel/vercel#12379))

- [cli] add telemetry for `vercel dns ls`
([#12380](vercel/vercel#12380))

- Add telemetry for `vercel env ls`
([#12392](vercel/vercel#12392))

- Add telemetry for `vercel bisect`
([#12362](vercel/vercel#12362))

- [cli] add telemetry for `vercel dns remove`
([#12381](vercel/vercel#12381))

- Add telemetry for `vercel integration add`
([#12406](vercel/vercel#12406))

- [cli] add telemetry tracking for vercel dev invocations
([#12349](vercel/vercel#12349))

- [cli] add subcommand tracking for `certs` group
([#12376](vercel/vercel#12376))

- [cli] add telemetry for `vercel redeploy`
([#12353](vercel/vercel#12353))

- [cli] add telemetry for `vercel domains inspect`
([#12407](vercel/vercel#12407))

- Add telemetry for `vercel certs issue`
([#12401](vercel/vercel#12401))

- Add telemetry for `vercel link`
([#12360](vercel/vercel#12360))

### Patch Changes

- Remove stray file
([#12363](vercel/vercel#12363))

- add metrics to dns add
([#12414](vercel/vercel#12414))

- Add telemetry to the `teams` subcommands. Telemetry collection is not
currently enabled and when it is, will be a major version bump for the
CLI. ([#12346](vercel/vercel#12346))

- add telemetry to `vc pull`
([#12387](vercel/vercel#12387))

- [cli] refactor Output usage
([#12305](vercel/vercel#12305))

- extract pull invocation from build
([#12372](vercel/vercel#12372))

- extract vc pull logic from entrypoint
([#12378](vercel/vercel#12378))

- Updated dependencies
\[[`e4304c4526f6062d23b7fdb381d9bb24c7431a0d`](vercel/vercel@e4304c4)]:
    -   @vercel/remix-builder@2.2.13

## @vercel/remix-builder@2.2.13

### Patch Changes

- Update `@remix-run/dev` fork to v2.13.1
([#12334](vercel/vercel#12334))

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.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.

5 participants