({
script,
cwd = process.cwd(),
commitMessage = "Version Packages",
}: VersionOptions)
| 103 | }; |
| 104 | |
| 105 | export async function runVersion({ |
| 106 | script, |
| 107 | cwd = process.cwd(), |
| 108 | commitMessage = "Version Packages", |
| 109 | }: VersionOptions) { |
| 110 | let branch = await gitUtils.getCurrentBranch(cwd); |
| 111 | let versionBranch = `changeset-release/${branch}`; |
| 112 | let { preState } = await readChangesetState(cwd); |
| 113 | |
| 114 | await gitUtils.switchToMaybeExistingBranch(versionBranch, cwd); |
| 115 | await gitUtils.reset("HEAD", undefined, cwd); |
| 116 | |
| 117 | let versionsByDirectory = await getVersionsByDirectory(cwd); |
| 118 | |
| 119 | if (script) { |
| 120 | let [versionCommand, ...versionArgs] = script.split(/\s+/); |
| 121 | await execWithOutput(versionCommand, versionArgs, { cwd }); |
| 122 | } else { |
| 123 | let changesetsCliPkgJson = await require(path.join( |
| 124 | cwd, |
| 125 | "node_modules", |
| 126 | "@changesets", |
| 127 | "cli", |
| 128 | "package.json" |
| 129 | )); |
| 130 | let cmd = semverLt(changesetsCliPkgJson.version, "2.0.0") |
| 131 | ? "bump" |
| 132 | : "version"; |
| 133 | await execWithOutput( |
| 134 | "node", |
| 135 | ["./node_modules/@changesets/cli/bin.js", cmd], |
| 136 | { cwd } |
| 137 | ); |
| 138 | } |
| 139 | |
| 140 | let changedPackages = await getChangedPackages(cwd, versionsByDirectory); |
| 141 | |
| 142 | // project with `commit: true` setting could have already committed files |
| 143 | if (!(await gitUtils.checkIfClean(cwd))) { |
| 144 | const finalCommitMessage = `${commitMessage}${ |
| 145 | preState ? ` (${preState.tag})` : "" |
| 146 | }`; |
| 147 | await gitUtils.commitAll(finalCommitMessage, cwd); |
| 148 | } |
| 149 | |
| 150 | await gitUtils.push(versionBranch, { force: true, cwd }); |
| 151 | return { versionBranch, changedPackages }; |
| 152 | } |
no test coverage detected