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/04/26 01:04:01 UTC
[06/35] cordova-coho git commit: added xml2js dependency. tweak
updateRepoVersion to also update plugin.xml files. plugin releaser now
updates versions in files.
added xml2js dependency. tweak updateRepoVersion to also update plugin.xml files. plugin releaser now updates versions in files.
Project: http://git-wip-us.apache.org/repos/asf/cordova-coho/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-coho/commit/39816cbd
Tree: http://git-wip-us.apache.org/repos/asf/cordova-coho/tree/39816cbd
Diff: http://git-wip-us.apache.org/repos/asf/cordova-coho/diff/39816cbd
Branch: refs/heads/master
Commit: 39816cbd9e7b0d810e8397c30e62e3c6623f5cf1
Parents: b776a58
Author: filmaj <ma...@gmail.com>
Authored: Fri Jan 20 14:57:44 2017 -0800
Committer: filmaj <ma...@gmail.com>
Committed: Tue Apr 25 17:22:52 2017 -0700
----------------------------------------------------------------------
package.json | 3 ++-
src/platform-release.js | 3 ++-
src/plugin-release.js | 17 +++++++++++++----
src/repoutil.js | 1 +
src/versionutil.js | 45 ++++++++++++++++++++++++++++++++++++++++++--
5 files changed, 61 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/39816cbd/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index f20f7b9..409cd15 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,8 @@
"shelljs": "0.1.4",
"treeify": "^1.0.1",
"jira-client": "4.2.0",
- "inquirer": "2.0.0"
+ "inquirer": "2.0.0",
+ "xml2js": "0.4.17"
},
"devDependencies": {
"nsp": ">=2.0.1",
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/39816cbd/src/platform-release.js
----------------------------------------------------------------------
diff --git a/src/platform-release.js b/src/platform-release.js
index e9cff9c..3ea90b1 100644
--- a/src/platform-release.js
+++ b/src/platform-release.js
@@ -69,7 +69,8 @@ function cpAndLog(src, dest) {
* @return {String} version Returns the calculated version
*
*/
-
+// TODO: if using this method to only retrieve repo version, use the new
+// versionutil.getRepoVersion method.
function *handleVersion(repo,ver,validate) {
var platform = repo.id;
var version = ver || undefined;
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/39816cbd/src/plugin-release.js
----------------------------------------------------------------------
diff --git a/src/plugin-release.js b/src/plugin-release.js
index 571b9c7..cfa7f5e 100644
--- a/src/plugin-release.js
+++ b/src/plugin-release.js
@@ -29,10 +29,10 @@ var executil = require('./executil');
var flagutil = require('./flagutil');
var gitutil = require('./gitutil');
var repoutil = require('./repoutil');
+var versionutil = require('./versionutil');
var repoupdate = require('./repo-update');
var repoclone = require('./repo-clone');
var reporeset = require('./repo-reset');
-var versionutil = require('./versionutil');
var jira_client = require('jira-client');
var inquirer = require('inquirer');
var print = apputil.print;
@@ -303,9 +303,16 @@ function *interactive_plugins_release() {
//TODO:
/* 8. ensure all dependencies and subdependencies have apache-compatible licenses.
* 9. update plugin versions + release notes.
- * - for each plugin, remove the `-dev` suffix in plugin.xml, package.json, and plugin.xml of `tests/` subdirectory (if exists)
- * - each plugin needs a version bump.
- * - the plugin may already have an acceptably-bumped verison. perhaps grab latest-published version of plugin from npm and compare to version in source as a hint to RM
+ * - for each plugin, remove the `-dev` suffix in plugin.xml, package.json, and plugin.xml of `tests/` subdirectory (if exists)*/
+ console.log('Removing the "-dev" suffix from versions...');
+ return co.wrap(function *() {
+ yield repoutil.forEachRepo(plugin_repos, function*(repo) {
+ var current_version = yield versionutil.getRepoVersion(repo);
+ var devless_version = versionutil.removeDev(current_version);
+ yield versionutil.updateRepoVersion(repo, devless_version, {commitChanges:false});
+ });
+ })();
+ /* - 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?
@@ -388,6 +395,8 @@ function cpAndLog(src, dest) {
*
*/
+// TODO: if using this function only to retrieve repo version, use the new
+// versionutil.getRepoVersion method instead.
function *handleVersion(repo,ver,validate) {
var platform = repo.id;
var version = ver || undefined;
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/39816cbd/src/repoutil.js
----------------------------------------------------------------------
diff --git a/src/repoutil.js b/src/repoutil.js
index 1db6758..83e72a2 100644
--- a/src/repoutil.js
+++ b/src/repoutil.js
@@ -422,6 +422,7 @@ var repoGroups = {
'all': allRepos,
'platform': platformRepos,
'platforms': platformRepos,
+ 'plugin': pluginRepos,
'plugins': pluginRepos,
'tools': toolRepos,
'active-platform': platformRepos.filter(function(r) { return !r.inactive }),
http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/39816cbd/src/versionutil.js
----------------------------------------------------------------------
diff --git a/src/versionutil.js b/src/versionutil.js
index 6124555..620b940 100644
--- a/src/versionutil.js
+++ b/src/versionutil.js
@@ -20,12 +20,25 @@ under the License.
var fs = require('fs');
var path = require('path');
var shelljs = require('shelljs');
+var xml2js = require('xml2js');
var apputil = require('./apputil');
var executil = require('./executil');
var flagutil = require('./flagutil');
var gitutil = require('./gitutil');
var repoutil = require('./repoutil');
+function *getRepoVersion(repo) {
+ var version;
+ yield repoutil.forEachRepo([repo], function*() {
+ var platformPackage = path.join(process.cwd(), 'package.json');
+ var platformPackageJson = require(platformPackage);
+ version = platformPackageJson.version;
+ });
+ return version;
+}
+
+exports.getRepoVersion = getRepoVersion;
+
function removeDev(version) {
var newVersion = version.replace('-dev', '');
return newVersion;
@@ -58,8 +71,9 @@ function updatePlatformsConfig(newValues) {
exports.updatePlatformsConfig = updatePlatformsConfig;
/**
- * Updates VERSION file, version executable script and package.json using specified
- * version. Also commits change made to the repo if opposite is not specified.
+ * Updates VERSION file, version executable script, package.json and
+ * plugin.xml(s) using specified version. Also commits change made to the repo
+ * if opposite is not specified.
*
* @param {Object} repo Repo to update version for
* @param {String} version A semver-compatible version to write to repo's files
@@ -69,6 +83,8 @@ exports.updatePlatformsConfig = updatePlatformsConfig;
*/
exports.updateRepoVersion = function *updateRepoVersion(repo, version, opts) {
// Update the VERSION files.
+ // TODO: why do we read files asynchronously in this function, but write
+ // and check for existence synchronously?
var versionFilePaths = repo.versionFilePaths || ['VERSION'];
var isPlatformRepo = !!repoutil.isInRepoGroup(repo, 'platform');
if (isPlatformRepo && fs.existsSync(versionFilePaths[0])) {
@@ -119,6 +135,31 @@ exports.updateRepoVersion = function *updateRepoVersion(repo, version, opts) {
console.warn('No package.json file exists in repo ' + repo.repoName);
}
+ // Update the plugin.xml(s)
+ var isPluginRepo = !!repoutil.isInRepoGroup(repo, 'plugins');
+ if (isPluginRepo) {
+ var xmlFilePaths = repo.xmlFilePaths || ['plugin.xml', 'tests/plugin.xml'];
+ xmlFilePaths.forEach(function(xmlFile) {
+ if (fs.existsSync(xmlFile)) {
+ fs.readFile(xmlFile, {encoding: 'utf-8'}, function (err, data) {
+ if (err) throw err;
+ xml2js.parseString(data, function(err, xml) {
+ if (err) throw err;
+ xml.plugin['$'].version = version;
+ var xmlWriter = new xml2js.Builder();
+ var xmlOutput = xmlWriter.buildObject(xml);
+ fs.writeFileSync(xmlFile, xmlOutput + '\n');
+ });
+ });
+ } else {
+ console.warn('No ' + xmlFile + ' file exists in repo ' + repo.repoName);
+ }
+ });
+ if (!(yield gitutil.pendingChangesExist())) {
+ apputil.print(xmlFilePaths + ' were already up-to-date.');
+ }
+ }
+
var commitChanges = !!(opts ? opts.commitChanges : true);
if (commitChanges && (yield gitutil.pendingChangesExist())) {
yield executil.execHelper(executil.ARGS('git commit -am', 'Set VERSION to ' + version + ' (via coho)'));
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org