export async function versionBump()

in src/package.ts [298:348]


export async function versionBump(options: IVersionBumpOptions): Promise<void> {
	if (!options.version) {
		return;
	}

	if (!(options.updatePackageJson ?? true)) {
		return;
	}

	const cwd = options.cwd ?? process.cwd();
	const manifest = await readManifest(cwd);

	if (manifest.version === options.version) {
		return;
	}

	switch (options.version) {
		case 'major':
		case 'minor':
		case 'patch':
			break;
		case 'premajor':
		case 'preminor':
		case 'prepatch':
		case 'prerelease':
		case 'from-git':
			return Promise.reject(`Not supported: ${options.version}`);
		default:
			if (!semver.valid(options.version)) {
				return Promise.reject(`Invalid version ${options.version}`);
			}
	}

	let command = `npm version ${options.version}`;

	if (options.commitMessage) {
		command = `${command} -m "${options.commitMessage}"`;
	}

	if (!(options.gitTagVersion ?? true)) {
		command = `${command} --no-git-tag-version`;
	}

	// call `npm version` to do our dirty work
	const { stdout, stderr } = await promisify(cp.exec)(command, { cwd });

	if (!process.env['VSCE_TESTS']) {
		process.stdout.write(stdout);
		process.stderr.write(stderr);
	}
}