@changesets/cli
Advanced tools
Comparing version 2.14.1 to 2.15.0
# @changesets/cli | ||
## 2.15.0 | ||
### Minor Changes | ||
- [#559](https://github.com/atlassian/changesets/pull/559) [`bb7106d`](https://github.com/atlassian/changesets/commit/bb7106de901b579bff50b317f1ee81919257ee30) Thanks [@Andarist](https://github.com/Andarist)! - Added new `--open` flag to the `add` command. It opens the created changeset with an external editor. | ||
### Patch Changes | ||
- Updated dependencies [[`8b9ac07`](https://github.com/atlassian/changesets/commit/8b9ac076a87eaf9556ec5ede0222a75182095662)]: | ||
- @changesets/assemble-release-plan@4.1.1 | ||
## 2.14.1 | ||
@@ -4,0 +15,0 @@ |
@@ -13,2 +13,3 @@ 'use strict'; | ||
var chalk = require('chalk'); | ||
var child_process = require('child_process'); | ||
var termSize = require('term-size'); | ||
@@ -397,7 +398,9 @@ var enquirer = require('enquirer'); | ||
async function add(cwd, { | ||
empty | ||
empty, | ||
open | ||
}, config) { | ||
const packages = await getPackages.getPackages(cwd); | ||
const changesetBase = path__default['default'].resolve(cwd, ".changeset"); | ||
let newChangeset, confirmChangeset; | ||
let newChangeset; | ||
let changesetConfirmed = false; | ||
@@ -409,3 +412,3 @@ if (empty) { | ||
}; | ||
confirmChangeset = true; | ||
changesetConfirmed = true; | ||
} else { | ||
@@ -419,6 +422,6 @@ const changedPackages = await git.getChangedPackagesSinceRef({ | ||
printConfirmationMessage(newChangeset, packages.packages.length > 1); | ||
confirmChangeset = await askConfirm("Is this your desired changeset?"); | ||
changesetConfirmed = await askConfirm("Is this your desired changeset?"); | ||
} | ||
if (confirmChangeset) { | ||
if (changesetConfirmed) { | ||
const changesetID = await writeChangeset__default['default'](newChangeset, cwd); | ||
@@ -445,3 +448,14 @@ | ||
logger.info(chalk__default['default'].blue(path__default['default'].resolve(changesetBase, `${changesetID}.md`))); | ||
const changesetPath = path__default['default'].resolve(changesetBase, `${changesetID}.md`); | ||
logger.info(chalk__default['default'].blue(changesetPath)); | ||
if (open) { | ||
// this is really a hack to reuse the logic embedded in `external-editor` related to determining the editor | ||
const externalEditor$1 = new externalEditor.ExternalEditor(); | ||
externalEditor$1.cleanup(); | ||
child_process.spawn(externalEditor$1.editor.bin, externalEditor$1.editor.args.concat([changesetPath]), { | ||
detached: true, | ||
stdio: "inherit" | ||
}); | ||
} | ||
} | ||
@@ -1098,7 +1112,9 @@ } | ||
const { | ||
empty | ||
empty, | ||
open | ||
} = flags; // @ts-ignore if this is undefined, we have already exited | ||
await add(cwd, { | ||
empty | ||
empty, | ||
open | ||
}, config$1); | ||
@@ -1117,3 +1133,4 @@ } else if (input[0] !== "pre" && input.length > 1) { | ||
snapshot, | ||
tag | ||
tag, | ||
open | ||
} = flags; | ||
@@ -1138,3 +1155,4 @@ const deadFlags = ["updateChangelog", "isPublic", "skipCI", "commit"]; | ||
await add(cwd, { | ||
empty | ||
empty, | ||
open | ||
}, config$1); | ||
@@ -1275,3 +1293,3 @@ return; | ||
init | ||
add [--empty] | ||
add [--empty] [--open] | ||
version [--ignore] | ||
@@ -1309,2 +1327,5 @@ publish [--otp=code] | ||
type: "string" | ||
}, | ||
open: { | ||
type: "boolean" | ||
} | ||
@@ -1311,0 +1332,0 @@ } |
"use strict"; | ||
var meow = require("meow"), errors = require("@changesets/errors"), logger = require("@changesets/logger"), util = require("util"), fs = require("fs-extra"), path = require("path"), getPackages = require("@manypkg/get-packages"), getDependentsGraph = require("@changesets/get-dependents-graph"), config = require("@changesets/config"), chalk = require("chalk"), termSize = require("term-size"), enquirer = require("enquirer"), externalEditor = require("external-editor"), git = require("@changesets/git"), writeChangeset = require("@changesets/write"), semver = require("semver"), boxen = require("boxen"), outdent = require("outdent"), applyReleasePlan = require("@changesets/apply-release-plan"), readChangesets = require("@changesets/read"), assembleReleasePlan = require("@changesets/assemble-release-plan"), pre$1 = require("@changesets/pre"), pLimit = require("p-limit"), preferredPM = require("preferred-pm"), spawn = require("spawndamnit"), isCI$1 = require("is-ci"), table = require("tty-table"), getReleasePlan = require("@changesets/get-release-plan"); | ||
var meow = require("meow"), errors = require("@changesets/errors"), logger = require("@changesets/logger"), util = require("util"), fs = require("fs-extra"), path = require("path"), getPackages = require("@manypkg/get-packages"), getDependentsGraph = require("@changesets/get-dependents-graph"), config = require("@changesets/config"), chalk = require("chalk"), child_process = require("child_process"), termSize = require("term-size"), enquirer = require("enquirer"), externalEditor = require("external-editor"), git = require("@changesets/git"), writeChangeset = require("@changesets/write"), semver = require("semver"), boxen = require("boxen"), outdent = require("outdent"), applyReleasePlan = require("@changesets/apply-release-plan"), readChangesets = require("@changesets/read"), assembleReleasePlan = require("@changesets/assemble-release-plan"), pre$1 = require("@changesets/pre"), pLimit = require("p-limit"), preferredPM = require("preferred-pm"), spawn = require("spawndamnit"), isCI$1 = require("is-ci"), table = require("tty-table"), getReleasePlan = require("@changesets/get-release-plan"); | ||
@@ -232,9 +232,9 @@ function _interopDefault(e) { | ||
async function add(cwd, {empty: empty}, config) { | ||
async function add(cwd, {empty: empty, open: open}, config) { | ||
const packages = await getPackages.getPackages(cwd), changesetBase = path__default.default.resolve(cwd, ".changeset"); | ||
let newChangeset, confirmChangeset; | ||
let newChangeset, changesetConfirmed = !1; | ||
if (empty) newChangeset = { | ||
releases: [], | ||
summary: "" | ||
}, confirmChangeset = !0; else { | ||
}, changesetConfirmed = !0; else { | ||
const changePackagesName = (await git.getChangedPackagesSinceRef({ | ||
@@ -245,5 +245,5 @@ cwd: cwd, | ||
newChangeset = await createChangeset(changePackagesName, packages.packages), printConfirmationMessage(newChangeset, packages.packages.length > 1), | ||
confirmChangeset = await askConfirm("Is this your desired changeset?"); | ||
changesetConfirmed = await askConfirm("Is this your desired changeset?"); | ||
} | ||
if (confirmChangeset) { | ||
if (changesetConfirmed) { | ||
const changesetID = await writeChangeset__default.default(newChangeset, cwd); | ||
@@ -254,4 +254,11 @@ config.commit ? (await git.add(path__default.default.resolve(changesetBase, changesetID + ".md"), cwd), | ||
logger.warn("WHAT the breaking change is"), logger.warn("WHY the change was made"), | ||
logger.warn("HOW a consumer should update their code")) : logger.log(chalk__default.default.green("If you want to modify or expand on the changeset summary, you can find it here")), | ||
logger.info(chalk__default.default.blue(path__default.default.resolve(changesetBase, changesetID + ".md"))); | ||
logger.warn("HOW a consumer should update their code")) : logger.log(chalk__default.default.green("If you want to modify or expand on the changeset summary, you can find it here")); | ||
const changesetPath = path__default.default.resolve(changesetBase, changesetID + ".md"); | ||
if (logger.info(chalk__default.default.blue(changesetPath)), open) { | ||
const externalEditor$1 = new externalEditor.ExternalEditor; | ||
externalEditor$1.cleanup(), child_process.spawn(externalEditor$1.editor.bin, externalEditor$1.editor.args.concat([ changesetPath ]), { | ||
detached: !0, | ||
stdio: "inherit" | ||
}); | ||
} | ||
} | ||
@@ -612,8 +619,9 @@ } | ||
if (input.length < 1) { | ||
const {empty: empty} = flags; | ||
const {empty: empty, open: open} = flags; | ||
await add(cwd, { | ||
empty: empty | ||
empty: empty, | ||
open: open | ||
}, config$1); | ||
} else if ("pre" !== input[0] && input.length > 1) logger.error("Too many arguments passed to changesets - we only accept the command name as an argument"); else { | ||
const {sinceMaster: sinceMaster, since: since, verbose: verbose, output: output, otp: otp, empty: empty, ignore: ignore, snapshot: snapshot, tag: tag} = flags; | ||
const {sinceMaster: sinceMaster, since: since, verbose: verbose, output: output, otp: otp, empty: empty, ignore: ignore, snapshot: snapshot, tag: tag, open: open} = flags; | ||
switch ([ "updateChangelog", "isPublic", "skipCI", "commit" ].forEach((flag => { | ||
@@ -626,3 +634,4 @@ if (flags[flag]) throw logger.error(`the flag ${flag} has been removed from changesets for version 2`), | ||
return void await add(cwd, { | ||
empty: empty | ||
empty: empty, | ||
open: open | ||
}, config$1); | ||
@@ -695,3 +704,3 @@ | ||
const {input: input, flags: flags} = meow__default.default("\n Usage\n $ changesets [command]\n Commands\n init\n add [--empty]\n version [--ignore]\n publish [--otp=code]\n status [--since-master --verbose --output=JSON_FILE.json]\n pre <enter|exit> <tag>\n ", { | ||
const {input: input, flags: flags} = meow__default.default("\n Usage\n $ changesets [command]\n Commands\n init\n add [--empty] [--open]\n version [--ignore]\n publish [--otp=code]\n status [--since-master --verbose --output=JSON_FILE.json]\n pre <enter|exit> <tag>\n ", { | ||
flags: { | ||
@@ -724,2 +733,5 @@ sinceMaster: { | ||
type: "string" | ||
}, | ||
open: { | ||
type: "boolean" | ||
} | ||
@@ -726,0 +738,0 @@ } |
@@ -11,5 +11,6 @@ import meow from 'meow'; | ||
import chalk from 'chalk'; | ||
import { spawn } from 'child_process'; | ||
import termSize from 'term-size'; | ||
import { prompt } from 'enquirer'; | ||
import { edit } from 'external-editor'; | ||
import { edit, ExternalEditor } from 'external-editor'; | ||
import { getChangedPackagesSinceRef, add as add$1, commit, tag } from '@changesets/git'; | ||
@@ -26,3 +27,3 @@ import writeChangeset from '@changesets/write'; | ||
import preferredPM from 'preferred-pm'; | ||
import spawn from 'spawndamnit'; | ||
import spawn$1 from 'spawndamnit'; | ||
import isCI$1 from 'is-ci'; | ||
@@ -375,7 +376,9 @@ import table from 'tty-table'; | ||
async function add(cwd, { | ||
empty | ||
empty, | ||
open | ||
}, config) { | ||
const packages = await getPackages(cwd); | ||
const changesetBase = path.resolve(cwd, ".changeset"); | ||
let newChangeset, confirmChangeset; | ||
let newChangeset; | ||
let changesetConfirmed = false; | ||
@@ -387,3 +390,3 @@ if (empty) { | ||
}; | ||
confirmChangeset = true; | ||
changesetConfirmed = true; | ||
} else { | ||
@@ -397,6 +400,6 @@ const changedPackages = await getChangedPackagesSinceRef({ | ||
printConfirmationMessage(newChangeset, packages.packages.length > 1); | ||
confirmChangeset = await askConfirm("Is this your desired changeset?"); | ||
changesetConfirmed = await askConfirm("Is this your desired changeset?"); | ||
} | ||
if (confirmChangeset) { | ||
if (changesetConfirmed) { | ||
const changesetID = await writeChangeset(newChangeset, cwd); | ||
@@ -423,3 +426,14 @@ | ||
info(chalk.blue(path.resolve(changesetBase, `${changesetID}.md`))); | ||
const changesetPath = path.resolve(changesetBase, `${changesetID}.md`); | ||
info(chalk.blue(changesetPath)); | ||
if (open) { | ||
// this is really a hack to reuse the logic embedded in `external-editor` related to determining the editor | ||
const externalEditor = new ExternalEditor(); | ||
externalEditor.cleanup(); | ||
spawn(externalEditor.editor.bin, externalEditor.editor.args.concat([changesetPath]), { | ||
detached: true, | ||
stdio: "inherit" | ||
}); | ||
} | ||
} | ||
@@ -569,3 +583,3 @@ } | ||
try { | ||
let result = await spawn("pnpm", ["--version"], { | ||
let result = await spawn$1("pnpm", ["--version"], { | ||
cwd | ||
@@ -593,3 +607,3 @@ }); | ||
}; | ||
let result = await spawn("npm", ["profile", "get", "--json"], { | ||
let result = await spawn$1("npm", ["profile", "get", "--json"], { | ||
env: Object.assign({}, process.env, envOverride) | ||
@@ -617,3 +631,3 @@ }); | ||
}; | ||
let result = await spawn("npm", ["info", pkgName, "--json"], { | ||
let result = await spawn$1("npm", ["info", pkgName, "--json"], { | ||
env: Object.assign({}, process.env, envOverride) | ||
@@ -697,3 +711,3 @@ }); // Github package registry returns empty string when calling npm info | ||
stdout | ||
} = await spawn(publishTool.name, ["publish", opts.cwd, "--json", ...publishFlags], { | ||
} = await spawn$1(publishTool.name, ["publish", opts.cwd, "--json", ...publishFlags], { | ||
env: Object.assign({}, process.env, envOverride) | ||
@@ -1080,7 +1094,9 @@ }); // New error handling. NPM's --json option is included alongside the `prepublish and | ||
const { | ||
empty | ||
empty, | ||
open | ||
} = flags; // @ts-ignore if this is undefined, we have already exited | ||
await add(cwd, { | ||
empty | ||
empty, | ||
open | ||
}, config); | ||
@@ -1099,3 +1115,4 @@ } else if (input[0] !== "pre" && input.length > 1) { | ||
snapshot, | ||
tag | ||
tag, | ||
open | ||
} = flags; | ||
@@ -1120,3 +1137,4 @@ const deadFlags = ["updateChangelog", "isPublic", "skipCI", "commit"]; | ||
await add(cwd, { | ||
empty | ||
empty, | ||
open | ||
}, config); | ||
@@ -1257,3 +1275,3 @@ return; | ||
init | ||
add [--empty] | ||
add [--empty] [--open] | ||
version [--ignore] | ||
@@ -1291,2 +1309,5 @@ publish [--otp=code] | ||
type: "string" | ||
}, | ||
open: { | ||
type: "boolean" | ||
} | ||
@@ -1293,0 +1314,0 @@ } |
import { Config } from "@changesets/types"; | ||
export default function add(cwd: string, { empty }: { | ||
export default function add(cwd: string, { empty, open }: { | ||
empty?: boolean; | ||
open?: boolean; | ||
}, config: Config): Promise<void>; |
@@ -15,2 +15,3 @@ import { AccessType } from "@changesets/types"; | ||
tag?: string; | ||
open?: boolean; | ||
}; | ||
@@ -17,0 +18,0 @@ export declare type CommandOptions = CliOptions & { |
{ | ||
"name": "@changesets/cli", | ||
"version": "2.14.1", | ||
"version": "2.15.0", | ||
"description": "Organise your package versioning and publishing to make both contributors and maintainers happy", | ||
@@ -28,3 +28,3 @@ "bin": { | ||
"@changesets/apply-release-plan": "^4.2.0", | ||
"@changesets/assemble-release-plan": "^4.1.0", | ||
"@changesets/assemble-release-plan": "^4.1.1", | ||
"@changesets/config": "^1.5.0", | ||
@@ -31,0 +31,0 @@ "@changesets/errors": "^0.1.4", |
@@ -102,3 +102,3 @@ ## @changesets/cli 🦋 | ||
``` | ||
changeset [--empty] | ||
changeset [--empty] [--open] | ||
``` | ||
@@ -109,3 +109,3 @@ | ||
``` | ||
changeset add [--empty] | ||
changeset add [--empty] [--open] | ||
``` | ||
@@ -140,2 +140,4 @@ | ||
- `--open` - opens the created changeset in an external editor | ||
### version | ||
@@ -142,0 +144,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
208222
3202
197
3