🐛 fix: fixing loop on publish

This commit is contained in:
Carlos 2024-08-13 21:36:50 -04:00
parent 5b270f037f
commit 9c57d891b8

View File

@ -6,12 +6,22 @@ const chalk = require('chalk');
async function run() { async function run() {
try { try {
// Prevent the script from running during npm lifecycle hooks
if (process.env.npm_lifecycle_event) {
console.log(
chalk.yellow(
'⚠️ Script is running in an npm lifecycle hook, exiting...'
)
);
return;
}
// Check if working directory is clean // Check if working directory is clean
const status = execSync('git status --porcelain').toString().trim(); const status = execSync('git status --porcelain').toString().trim();
if (status) { if (status) {
console.error( console.error(
chalk.red( chalk.red(
'Error: Your working directory is not clean. Please commit or stash your changes first.' 'Error: Your working directory is not clean. Please commit or stash your changes first.'
) )
); );
process.exit(1); process.exit(1);
@ -19,38 +29,41 @@ async function run() {
// Pull the latest changes // Pull the latest changes
console.log( console.log(
chalk.blue('Pulling the latest changes from the remote repository...') chalk.blue('🔄 Pulling the latest changes from the remote repository...')
); );
execSync('git pull origin master', { stdio: 'inherit' }); execSync('git pull origin main', { stdio: 'inherit' });
// Ask the user to choose the version bump type // Ask the user to choose the version bump type
const { versionType } = await inquirer.prompt([ const { versionType } = await inquirer.prompt([
{ {
type: 'list', type: 'list',
name: 'versionType', name: 'versionType',
message: 'Select the type of version bump:', message: '🔢 Select the type of version bump:',
choices: ['patch', 'minor', 'major'], choices: ['patch', 'minor', 'major'],
}, },
]); ]);
// Bump the version // Bump the version
console.log(chalk.blue(`Bumping the ${versionType} version...`)); console.log(chalk.blue(`📦 Bumping the ${versionType} version...`));
execSync(`npm version ${versionType}`, { stdio: 'inherit' }); execSync(`npm version ${versionType}`, { stdio: 'inherit' });
// Commit and push changes // Commit and push changes
console.log(chalk.blue('Pushing changes to the remote repository...')); console.log(chalk.blue('🚀 Pushing changes to the remote repository...'));
execSync('git push origin master --follow-tags', { stdio: 'inherit' }); execSync('git push origin main --follow-tags', { stdio: 'inherit' });
// Publish the package // Publish the package
console.log(chalk.blue('Publishing the package to npm...')); console.log(chalk.blue('📤 Publishing the package to npm...'));
execSync('npm publish', { stdio: 'inherit' }); execSync('npm publish', { stdio: 'inherit' });
console.log( console.log(
chalk.green(`🚀 Successfully released a new ${versionType} version!`) chalk.green(`🚀 Successfully released a new ${versionType} version!`)
); );
// Exit the process to avoid any potential loops
process.exit(0);
} catch (error) { } catch (error) {
console.error( console.error(
chalk.red('An error occurred during the release process:'), chalk.red('An error occurred during the release process:'),
error.message error.message
); );
process.exit(1); process.exit(1);