From 470f6e4a1b6cf51fcd3929c76250f239c7fecefe Mon Sep 17 00:00:00 2001 From: Milo Fultz Date: Wed, 12 Feb 2025 10:33:59 -0800 Subject: [PATCH 1/3] Add no-commit flag --- .../cli/src/commands/add/__tests__/add.ts | 32 +++++++++++++++++++ packages/cli/src/commands/add/index.ts | 4 +-- packages/cli/src/index.ts | 5 +-- packages/cli/src/run.ts | 4 +-- packages/cli/src/types.ts | 1 + 5 files changed, 40 insertions(+), 6 deletions(-) diff --git a/packages/cli/src/commands/add/__tests__/add.ts b/packages/cli/src/commands/add/__tests__/add.ts index 1664ae3ce..0782359df 100644 --- a/packages/cli/src/commands/add/__tests__/add.ts +++ b/packages/cli/src/commands/add/__tests__/add.ts @@ -236,6 +236,38 @@ describe("Add command", () => { expect(git.commit).toHaveBeenCalledTimes(1); }); + it("should not commit when the `no-commit` flag is passed in", async () => { + const cwd = await testdir({ + "package.json": JSON.stringify({ + private: true, + workspaces: ["packages/*"], + }), + "packages/pkg-a/package.json": JSON.stringify({ + name: "pkg-a", + version: "1.0.0", + dependencies: { + "pkg-b": "1.0.0", + }, + }), + "packages/pkg-b/package.json": JSON.stringify({ + name: "pkg-b", + version: "1.0.0", + }), + }); + + mockUserResponses({ releases: { "pkg-a": "patch" } }); + await addChangeset( + cwd, + { empty: false, noCommit: true }, + { + ...defaultConfig, + commit: [path.resolve(__dirname, "..", "..", "..", "commit"), null], + } + ); + expect(git.add).toHaveBeenCalledTimes(0); + expect(git.commit).toHaveBeenCalledTimes(0); + }); + it("should create empty changeset when empty flag is passed in", async () => { const cwd = await testdir({ "package.json": JSON.stringify({ diff --git a/packages/cli/src/commands/add/index.ts b/packages/cli/src/commands/add/index.ts index 3e3a59318..c6424606a 100644 --- a/packages/cli/src/commands/add/index.ts +++ b/packages/cli/src/commands/add/index.ts @@ -18,7 +18,7 @@ import printConfirmationMessage from "./messages"; export default async function add( cwd: string, - { empty, open }: { empty?: boolean; open?: boolean }, + { empty, open, noCommit }: { empty?: boolean; open?: boolean; noCommit?: boolean }, config: Config ): Promise { const packages = await getPackages(cwd); @@ -90,7 +90,7 @@ export default async function add( config.commit, cwd ); - if (getAddMessage) { + if (getAddMessage && !noCommit) { await git.add(path.resolve(changesetBase, `${changesetID}.md`), cwd); await git.commit(await getAddMessage(newChangeset, commitOpts), cwd); log(pc.green(`${empty ? "Empty " : ""}Changeset added and committed`)); diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index de627c493..da837d98d 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -7,7 +7,7 @@ import { run } from "./run"; const args = process.argv.slice(2); const parsed = mri(args, { - boolean: ["sinceMaster", "verbose", "empty", "open", "gitTag", "snapshot"], + boolean: ["sinceMaster", "verbose", "empty", "open", "gitTag", "snapshot", "noCommit"], string: [ "output", "otp", @@ -21,6 +21,7 @@ const parsed = mri(args, { // Short flags v: "verbose", o: "output", + n: "noCommit", // Support kebab-case flags "since-master": "sinceMaster", "git-tag": "gitTag", @@ -52,7 +53,7 @@ if (parsed.help && args.length === 1) { $ changeset [command] Commands init - add [--empty] [--open] + add [--empty] [--open] [--no-commit] version [--ignore] [--snapshot ] [--snapshot-prerelease-template