112 lines
2.7 KiB
JavaScript
112 lines
2.7 KiB
JavaScript
'use strict';
|
|
|
|
import config from '../../config';
|
|
import gulp from 'gulp';
|
|
import inquirer from 'inquirer';
|
|
import replace from 'gulp-replace';
|
|
import {execSync as exec, spawnSync as spawn} from 'child_process';
|
|
|
|
let VERSIONED_FILES = [
|
|
'bower.json',
|
|
'package.json'
|
|
];
|
|
|
|
let CURRENT_VERSION = require('../../package.json').version;
|
|
let NEXT_VERSION;
|
|
let NEXT_MESSAGE;
|
|
|
|
export function prompt(done) {
|
|
inquirer.prompt([{
|
|
type: 'input',
|
|
name: 'version',
|
|
message: `What version are we moving to? (Current version is ${CURRENT_VERSION})`,
|
|
validate: function (input) {
|
|
if(input === '') {
|
|
input = CURRENT_VERSION;
|
|
}
|
|
return /^\d*[\d.]*\d*$/.test(input);
|
|
}
|
|
}]).then((answers) => {
|
|
if(answers.version === '') {
|
|
NEXT_VERSION = CURRENT_VERSION;
|
|
} else {
|
|
NEXT_VERSION = answers.version;
|
|
}
|
|
|
|
done();
|
|
});
|
|
}
|
|
|
|
export function message(done) {
|
|
inquirer.prompt([{
|
|
type: 'input',
|
|
name: 'message',
|
|
message: `What message are we going to commit?`,
|
|
validate: function (input) {
|
|
if(input === '' && NEXT_VERSION === CURRENT_VERSION) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}]).then((answers) => {
|
|
if(answers.message !== ''){
|
|
NEXT_MESSAGE = answers.message;
|
|
}
|
|
done();
|
|
});
|
|
}
|
|
|
|
// Bumps the version number in any file that has one
|
|
export function version() {
|
|
return gulp.src(VERSIONED_FILES, { base: process.cwd() })
|
|
//.pipe(replace(CURRENT_VERSION, NEXT_VERSION))
|
|
.pipe(replace(/("|')version\1\s*:\s*("|')([\d.]+)\2/, `$1version$1:$2${NEXT_VERSION}$2`))
|
|
.pipe(gulp.dest('.'));
|
|
}
|
|
|
|
export function init(done) {
|
|
config.deploy = true;
|
|
config.init();
|
|
|
|
done();
|
|
}
|
|
|
|
// Writes a commit with the changes to the version numbers
|
|
export function commit(done) {
|
|
let message = `Bump to version ${NEXT_VERSION}`;
|
|
|
|
if(NEXT_VERSION === CURRENT_VERSION) {
|
|
message = NEXT_MESSAGE;
|
|
} else {
|
|
message = `${message}; ${NEXT_MESSAGE}`;
|
|
}
|
|
exec('git add .');
|
|
exec(`git commit -am "${message}"`);
|
|
exec(`git tag v${NEXT_VERSION}`);
|
|
exec('git push origin master --follow-tags');
|
|
done();
|
|
}
|
|
|
|
export function pull(done) {
|
|
let fail = function (msg) {
|
|
console.error('Prepare aborted.');
|
|
console.error(msg);
|
|
process.exit(1);
|
|
};
|
|
|
|
// Check for uncommitted changes
|
|
let gitStatusResult = exec('git status --porcelain');
|
|
if (gitStatusResult.toString().length > 0) {
|
|
return fail('You have uncommitted changes, please stash or commit them before running prepare');
|
|
}
|
|
|
|
// Pull latest
|
|
let gitPullResult = spawn('git', ['pull', 'origin', 'master']);
|
|
if (gitPullResult.status !== 0) {
|
|
let error = gitPullResult.stderr.toString();
|
|
return fail(`There was an error running 'git pull':\n${error}`);
|
|
}
|
|
|
|
return done();
|
|
}
|