Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLI: Improve add command & add tests #26298

Merged
merged 8 commits into from
Mar 4, 2024
Merged

CLI: Improve add command & add tests #26298

merged 8 commits into from
Mar 4, 2024

Conversation

ndelangen
Copy link
Member

@ndelangen ndelangen commented Mar 4, 2024

Closes #25871

What I did

I found that the add command contained a few quicks and bugs that I fixed.

  • when adding a single digit version such as this: sb add package@1 it would install the latest version instead
  • when adding a storybook package it wouldn't warn you when installing a specific version that isn't the current
  • the logic to split a package+version specifier into a packageName & versionSpecifier wasn't setup to deal with scope packages

I added tests for the functionality of the add command.
The getVersionSpecifier function is tested separately, because regexes can be tricky, and it's faster to iterate on it this way if there is ever another bug with in.

I can remove the warning functionality if it isn't desired.
I figured i'd be nice to have because it would prevent it from later becoming an issue the user would have to fix with the doctor command.

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

I've tested this manually in a sandbox via running the CLI directly from dist:

(next)⚡ [7] % node ../../code/lib/cli/bin/index.js add @chromatic-com/storybook@1.0.0
/Users/me/Projects/Storybook/mono/storybook/code/lib/cli/bin/index.js:23
  throw error;
  ^

Error: Addon @chromatic-com/storybook is already installed; we skipped adding it to your .storybook/main.ts.
    at add (/Users/me/Projects/Storybook/mono/storybook/code/lib/cli/dist/generate.js:3699:11)

Node.js v18.19.1
(next)⚡ [7] % node ../../code/lib/cli/bin/index.js add @storybook/addon-onboarding@1.0.0
/Users/me/Projects/Storybook/mono/storybook/code/lib/cli/bin/index.js:23
  throw error;
  ^

Error: Addon @storybook/addon-onboarding is already installed; we skipped adding it to your .storybook/main.ts.
    at add (/Users/me/Projects/Storybook/mono/storybook/code/lib/cli/dist/generate.js:3699:11)

Node.js v18.19.1
(next)⚡ [7] % node ../../code/lib/cli/bin/index.js add @storybook/addon-measure@1.0.0   
Verifying @storybook/addon-measure
Installing @storybook/addon-measure@^1.0.0
Adding '@storybook/addon-measure@1.0.0' to main.js addons field.
(next)⚡ % node ../../code/lib/cli/bin/index.js add @storybook/addon-measure      
Verifying @storybook/addon-measure
Installing @storybook/addon-measure@^8.0.0-rc.1
Adding '@storybook/addon-measure' to main.js addons field.
(next)⚡ %        

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the @storybookjs/core team here.

core team members can create a canary release here or locally with gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>

@ndelangen ndelangen self-assigned this Mar 4, 2024
@ndelangen ndelangen marked this pull request as draft March 4, 2024 12:59
@ndelangen ndelangen changed the title fix the bug and add tests to ensure it doesn't fail ever again CLI: Improve add command & add tests Mar 4, 2024
Comment on lines +1 to +19
import type { PostinstallOptions } from './add';

export const postinstallAddon = async (addonName: string, options: PostinstallOptions) => {
try {
const modulePath = require.resolve(`${addonName}/postinstall`, { paths: [process.cwd()] });

const postinstall = require(modulePath);

try {
console.log(`Running postinstall script for ${addonName}`);
await postinstall(options);
} catch (e) {
console.error(`Error running postinstall script for ${addonName}`);
console.error(e);
}
} catch (e) {
// no postinstall script
}
};
Copy link
Member Author

Choose a reason for hiding this comment

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

I extracted this, to be able to easily mock it in my test.

@ndelangen ndelangen marked this pull request as ready for review March 4, 2024 13:36
Copy link
Contributor

@valentinpalkovic valentinpalkovic left a comment

Choose a reason for hiding this comment

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

Code-wise LGTM!

@ndelangen ndelangen merged commit 6701349 into next Mar 4, 2024
56 checks passed
@ndelangen ndelangen deleted the norbert/fix-cli-add branch March 4, 2024 19:53
@github-actions github-actions bot mentioned this pull request Mar 4, 2024
17 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: Storybook add with version selectors
2 participants