You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2017/01/21 01:15:09 UTC
cordova-coho git commit: refactoring some of the functionality inside
update-release-notes. add updating release notes to plugins releaser!
Repository: cordova-coho
Updated Branches:
refs/heads/plugins-releaser 1e5311f19 -> dd89b8284
refactoring some of the functionality inside update-release-notes. add updating release notes to plugins releaser!
Project: http://git-wip-us.apache.org/repos/asf/cordova-coho/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-coho/commit/dd89b828
Tree: http://git-wip-us.apache.org/repos/asf/cordova-coho/tree/dd89b828
Diff: http://git-wip-us.apache.org/repos/asf/cordova-coho/diff/dd89b828
Branch: refs/heads/plugins-releaser
Commit: dd89b82845b19f86b269e9fd1a3b749c34cb7abf
Parents: 1e5311f
Author: filmaj <ma...@gmail.com>
Authored: Fri Jan 20 17:15:03 2017 -0800
Committer: filmaj <ma...@gmail.com>
Committed: Fri Jan 20 17:15:03 2017 -0800
----------------------------------------------------------------------
src/gitutil.js | 5 ++++-
src/plugin-release.js | 33 +++++++++++++++++++++++++++++----
src/update-release-notes.js | 30 +++++++++++++++++++-----------
3 files changed, 52 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/dd89b828/src/gitutil.js
----------------------------------------------------------------------
diff --git a/src/gitutil.js b/src/gitutil.js
index 270268e..bce552b 100644
--- a/src/gitutil.js
+++ b/src/gitutil.js
@@ -160,5 +160,8 @@ exports.gitClean = function() {
}
exports.summaryOfChanges = function(base_sha) {
- return executil.execHelper(executil.ARGS('git log --oneline --topo-order --no-merges ' + base_sha + '..master'), true, false);
+ var cmd = executil.ARGS('git log --topo-order --no-merges');
+ cmd.push(['--pretty=format:* %s']);
+ cmd.push(base_sha + '..master');
+ return executil.execHelper(cmd, true, false);
}
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/dd89b828/src/plugin-release.js
----------------------------------------------------------------------
diff --git a/src/plugin-release.js b/src/plugin-release.js
index cfa7f5e..1693577 100644
--- a/src/plugin-release.js
+++ b/src/plugin-release.js
@@ -25,6 +25,7 @@ var optimist = require('optimist');
var shelljs = require('shelljs');
var apputil = require('./apputil');
var audit_license = require('./audit-license-headers');
+var tweak_release_notes = require('./update-release-notes');
var executil = require('./executil');
var flagutil = require('./flagutil');
var gitutil = require('./gitutil');
@@ -233,7 +234,7 @@ function *interactive_plugins_release() {
});
if (changes.length > 0) {
plugin_data[repo.repoName].needs_release = true;
- plugin_data[repo.repoName].changes = changes;
+ plugin_data[repo.repoName].changes = changes.join('\n');
plugins_to_release.push(repo.repoName);
} else {
plugin_data[repo.repoName].needs_release = false;
@@ -309,17 +310,41 @@ function *interactive_plugins_release() {
yield repoutil.forEachRepo(plugin_repos, function*(repo) {
var current_version = yield versionutil.getRepoVersion(repo);
var devless_version = versionutil.removeDev(current_version);
+ plugin_data[repo.repoName].current_release = devless_version;
yield versionutil.updateRepoVersion(repo, devless_version, {commitChanges:false});
});
})();
+ }).then(function() {
/* - each plugin may need a version bump.
* - how to determine if patch, minor or major? show changes to each plugin and then prompt Release Manager for a decision?
- * - reuse coho 'update release notes' command
- * - what's the average case? just a patch bump? perhaps, for each plugin, show release notes and let RM override version beyond patch bump if RM believes it is necessary?
+ * - reuse coho 'update release notes' command */
+ var plugs = Object.keys(plugin_data);
+ var release_note_prompts = [];
+ plugs.forEach(function(plugin) {
+ var data = plugin_data[plugin];
+ var changes = data.changes;
+ release_note_prompts.push({
+ type: 'editor',
+ name: plugin,
+ message: 'Please tweak and compile ' + plugin + ' release notes',
+ default: tweak_release_notes.createNotes(plugin, data.current_release, changes)
+ });
+ // TODO: need a validate function to ensure semver adherence
+ release_note_prompts.push({
+ type: 'input',
+ name: plugin + '-version',
+ message: 'Please enter a semver-compatible version number for this release of ' + plugin + ', based on the changes below:\n' + changes,
+ default: data.current_release
+ });
+ });
+ return inquirer.prompt(release_note_prompts);
+ }).then(function(release_notes) {
+ console.log('release notes!', release_notes);
+ });
+ /* - what's the average case? just a patch bump? perhaps, for each plugin, show release notes and let RM override version beyond patch bump if RM believes it is necessary?
* - while reviewing changes for version bump, this is probably the right time to aggregate release notes. once aggregated, write them out to RELEASENOTES.md
* - commit changes to versions and release notes together with description '$JIRA Updated version and release notes for release $v'
* - tag each plugin repo with $v*/
- });
}, function(auth_err) {
var keys = Object.keys(auth_err);
console.error('ERROR! There was a problem connecting to JIRA, received a', auth_err.statusCode, 'status code.');
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/dd89b828/src/update-release-notes.js
----------------------------------------------------------------------
diff --git a/src/update-release-notes.js b/src/update-release-notes.js
index 8398d53..6154097 100644
--- a/src/update-release-notes.js
+++ b/src/update-release-notes.js
@@ -26,6 +26,8 @@ var gitutil = require('./gitutil');
var repoutil = require('./repoutil');
var linkify = require('jira-linkify');
+var relNotesFile = 'RELEASENOTES.md';
+
module.exports = function*() {
var meEmail = yield executil.execHelper(executil.ARGS('git config user.email'), true);
var opt = flagutil.registerRepoFlag(optimist);
@@ -47,6 +49,7 @@ module.exports = function*() {
var repos = flagutil.computeReposFromFlag(argv.r, {includeModules: true});
+ // TODO: we should use gitutil.summaryOfChanges here.
var cmd = executil.ARGS('git log --topo-order --no-merges');
cmd.push(['--pretty=format:* %s']);
yield repoutil.forEachRepo(repos, function*(repo) {
@@ -92,19 +95,24 @@ module.exports = function*() {
} else {
newVersion = toTag;
}
-
- var relNotesFile = 'RELEASENOTES.md';
- var data = fs.readFileSync(relNotesFile, {encoding: 'utf8'});
- var pos = data.indexOf('### ');
- var date;
- if (argv['override-date']) {
- date = new Date(argv['override-date']).toDateString().split(' ');
- } else {
- date = new Date().toDateString().split(' ');
- }
- data = data.substr(0, pos) + "### " + newVersion + ' (' + date[1] + ' ' + date[2] + ', ' + date[3] + ')\n' + output + '\n\n' + data.substr(pos);
+ var data = createNotes(newVersion, output, argv['override-date']);
fs.writeFileSync(relNotesFile, data, {encoding: 'utf8'});
+ // TODO: does it need to write to a file or can we do it via strings in memory?
linkify.file(relNotesFile);
}
});
};
+
+function createNotes(repo, newVersion, changes, overrideDate) {
+ var relNotesData = fs.readFileSync(path.join(process.cwd(), repo, relNotesFile), {encoding: 'utf8'});
+ var headerPos = relNotesData.indexOf('### ');
+ var date;
+ if (overrideDate) {
+ date = new Date(overrideDate).toDateString().split(' ');
+ } else {
+ date = new Date().toDateString().split(' ');
+ }
+ return relNotesData.substr(0, headerPos) + "### " + newVersion + ' (' + date[1] + ' ' + date[2] + ', ' + date[3] + ')\n' + changes + '\n\n' + relNotesData.substr(headerPos);
+}
+
+module.exports.createNotes = createNotes;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org