generator-sublime
Version:
Yeoman generator for scaffolfding the standard configuration root files like .gitignore, .jshintrc, .jscsrc etc...
74 lines (66 loc) • 2.31 kB
JavaScript
;
global.Promise = require('bluebird');
var gulp = require('gulp');
var changelog = require('conventional-changelog');
var argv = require('yargs').argv;
var fs = require('fs');
var path = require('path');
var gutil = require('gulp-util');
var exec = require('gulp-exec');
var concat = require('gulp-concat');
var order = require('gulp-order');
var helper = require('../common/helper');
var constants = require('../common/constants')();
var repository = constants.repository;
var makeChangelog = function(options) {
if (repository.length <= 0) {
throw new Error('The repository cannot be empty');
}
var pkg = helper.readJsonFile('./package.json');
var codename = pkg.codename;
var file = options.standalone ? '' : path.join(__dirname, 'CHANGELOG.md');
var subtitle = options.subtitle || '"' + codename + '"';
var from = options.from;
var version = options.version || pkg.version;
return new Promise(function(resolve, reject) {
changelog({
repository: repository,
version: version,
subtitle: subtitle,
file: file,
from: from
}, function(err, log) {
if (err) {
reject(err);
} else {
gutil.log('LOG', log);
resolve(log);
}
});
});
};
gulp.task('changelog:conventional', false, function(cb) {
var dest = argv.dest || 'CHANGELOG.md';
return makeChangelog(argv).then(function(log) {
fs.writeFileSync(dest, log);
cb();
});
});
gulp.task('changelog:script', false, function(done) {
var pkg = helper.readJsonFile('./package.json');
var options = argv;
var version = options.version || pkg.version;
var from = options.from || '';
gulp.src('')
.pipe(exec('node ./gulp_tasks/common/changelog-script.js ' + version + ' ' + from, {
pipeStdout: true,
maxBuffer: constants.maxBuffer
}))
.pipe(concat('updates.md'))
.pipe(helper.addSrc('CHANGELOG.md'))
.pipe(order(['updates.md', 'CHANGELOG.md']))
.pipe(concat('CHANGELOG.md'))
.pipe(gulp.dest('./'))
.on('end', done);
});
gulp.task('changelog', 'Generates a CHANGELOG.md file.', ['changelog:script']);