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