You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.7 KiB
70 lines
1.7 KiB
import {exec} from 'child_process';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
/* eslint no-console: 0 */
|
|
|
|
const pkg = require(path.join(__dirname, '../package.json'));
|
|
|
|
/**
|
|
* Determines whether or not the project has the CHANGELOG setup by checking
|
|
* for the presence of a CHANGELOG.md file and the necessary dependency and
|
|
* npm script.
|
|
*
|
|
* @return {Boolean}
|
|
*/
|
|
const hasChangelog = () => {
|
|
try {
|
|
fs.statSync(path.join(__dirname, '../CHANGELOG.md'));
|
|
} catch (x) {
|
|
return false;
|
|
}
|
|
return pkg.devDependencies.hasOwnProperty('chg') &&
|
|
pkg.scripts.hasOwnProperty('change');
|
|
};
|
|
|
|
/**
|
|
* Determines whether or not the project has the Bower setup by checking for
|
|
* the presence of a bower.json file.
|
|
*
|
|
* @return {Boolean}
|
|
*/
|
|
const hasBower = () => {
|
|
try {
|
|
fs.statSync(path.join(__dirname, '../bower.json'));
|
|
return true;
|
|
} catch (x) {
|
|
return false;
|
|
}
|
|
};
|
|
|
|
const commands = [];
|
|
|
|
// If the project has a CHANGELOG, update it for the new release.
|
|
if (hasChangelog()) {
|
|
commands.push(`chg release "${pkg.version}"`);
|
|
commands.push('git add CHANGELOG.md');
|
|
}
|
|
|
|
// If the project supports Bower, perform special extra versioning step.
|
|
if (hasBower()) {
|
|
commands.push('git add package.json');
|
|
commands.push(`git commit -m "${pkg.version}"`);
|
|
|
|
// We only need a build in the Bower-supported case because of the
|
|
// temporary addition of the dist/ directory.
|
|
commands.push('npm run build');
|
|
commands.push('git add -f dist');
|
|
}
|
|
|
|
if (commands.length) {
|
|
exec(commands.join(' && '), (err, stdout, stderr) => {
|
|
if (err) {
|
|
process.stdout.write(err.stack);
|
|
process.exit(err.status || 1);
|
|
} else {
|
|
process.stdout.write(stdout);
|
|
}
|
|
});
|
|
}
|