wp-release-automation
Version:
A comprehensive CLI tool for automating WordPress plugin and theme release processes with version management, ZIP creation, and Git integration.
60 lines (54 loc) • 2.06 kB
JavaScript
const fs = require('fs');
const path = require('path');
const chalk = require('chalk');
function updateVersion(packageJsonPath, newVersion) {
const packageJson = require(packageJsonPath);
packageJson.version = newVersion;
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
console.log(chalk.green(`✅ Version updated to ${newVersion}`));
}
function bumpPatchVersion(packageJsonPath) {
const packageJson = require(packageJsonPath);
const versionParts = packageJson.version.split('.');
versionParts[2] = parseInt(versionParts[2]) + 1;
packageJson.version = versionParts.join('.');
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
return packageJson.version;
}
function bumpMinorVersion(packageJsonPath) {
const packageJson = require(packageJsonPath);
const versionParts = packageJson.version.split('.');
versionParts[1] = parseInt(versionParts[1]) + 1;
versionParts[2] = 0;
packageJson.version = versionParts.join('.');
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
return packageJson.version;
}
function bumpMajorVersion(packageJsonPath) {
const packageJson = require(packageJsonPath);
const versionParts = packageJson.version.split('.');
versionParts[0] = parseInt(versionParts[0]) + 1;
versionParts[1] = 0;
versionParts[2] = 0;
packageJson.version = versionParts.join('.');
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
return packageJson.version;
}
function bumpVersion(type, packageJsonPath) {
switch (type) {
case 'major':
return bumpMajorVersion(packageJsonPath);
case 'minor':
return bumpMinorVersion(packageJsonPath);
case 'patch':
default:
return bumpPatchVersion(packageJsonPath);
}
}
module.exports = {
updateVersion,
bumpPatchVersion,
bumpMinorVersion,
bumpMajorVersion,
bumpVersion
};