Repository: cordova-coho Updated Branches: refs/heads/master 99b8d31e9 -> 90187c337
split out some repo into accessible subcommands. update co to v4 for promise support. Project: http://git-wip-us.apache.org/repos/asf/cordova-coho/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-coho/commit/0086213c Tree: http://git-wip-us.apache.org/repos/asf/cordova-coho/tree/0086213c Diff: http://git-wip-us.apache.org/repos/asf/cordova-coho/diff/0086213c Branch: refs/heads/master Commit: 0086213c311991d48f0e3ab26b0660ba0946d0c2 Parents: 03bebaf Author: filmaj <[email protected]> Authored: Thu Jan 19 14:10:21 2017 -0800 Committer: filmaj <[email protected]> Committed: Tue Apr 25 17:22:51 2017 -0700 ---------------------------------------------------------------------- package.json | 2 +- src/main.js | 2 +- src/plugin-release.js | 15 ++++++++-- src/repo-reset.js | 73 ++++++++++++++++++++++++---------------------- 4 files changed, 53 insertions(+), 39 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/0086213c/package.json ---------------------------------------------------------------------- diff --git a/package.json b/package.json index 6b99903..f20f7b9 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "dependencies": { "chalk": "~0.4", - "co": "~3.0", + "co": "~4.0", "glob": "^5.0.14", "gnode": "^0.1.0", "jasmine": "^2.5.3", http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/0086213c/src/main.js ---------------------------------------------------------------------- diff --git a/src/main.js b/src/main.js index 32a0164..ae510b9 100644 --- a/src/main.js +++ b/src/main.js @@ -229,5 +229,5 @@ module.exports = function() { executil.verbose = true; } var entry = command.entryPoint; - co(entry)(); + co(entry).then(); }; http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/0086213c/src/plugin-release.js ---------------------------------------------------------------------- diff --git a/src/plugin-release.js b/src/plugin-release.js index 02f1100..59fd370 100644 --- a/src/plugin-release.js +++ b/src/plugin-release.js @@ -17,6 +17,7 @@ specific language governing permissions and limitations under the License. */ +var co = require('co'); var path = require('path'); var fs = require('fs'); var util = require('util'); @@ -29,6 +30,7 @@ var gitutil = require('./gitutil'); var repoutil = require('./repoutil'); 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'); @@ -47,7 +49,7 @@ var jira_issue_types; // store ref to all issue types supported by our JIRA inst var jira_task_issue; // store ref to the "task" issue type var plugin_base; // parent directory holding all cordova plugins -module.exports.interactive = function *interactive_plugins_release() { +function *interactive_plugins_release() { console.log('Hi! So you want to do a plugins release, do you?'); console.log('Let\'s start with your JIRA credentials - this system will be interacting with Apache\'s JIRA instance (issues.apache.org) often.'); inquirer.prompt([{ @@ -199,12 +201,20 @@ module.exports.interactive = function *interactive_plugins_release() { plugin_base = path.resolve(path.normalize(answers.cwd)); // TODO: is `plugins_base` pass-able to cloneRepos here? var plugin_repos = flagutil.computeReposFromFlag('plugins', {includeSvn:true}); - yield require('./repo-clone').cloneRepos(plugin_repos, false, null); + // TODO: wrapping yields in co is fugly + return co.wrap(function *() { + yield repoclone.cloneRepos(plugin_repos, false, null); + yield reporeset.resetRepos(plugin_repos, ['master']); + yield repoupdate.updateRepos(plugin_repos, ['master'], /*noFetch*/false); + return true; + })(); } else { console.error('Well you should type in the correct location the first time. Or this section of coho code should be coded more robustly! Contributions welcome :P'); console.error('Please try again.'); process.exit(4); } + }).then(function() { + console.log('ok plugins are updated at this point, onwards!'); }); }, function(auth_err) { var keys = Object.keys(auth_err); @@ -250,6 +260,7 @@ module.exports.interactive = function *interactive_plugins_release() { * TODO: Need ability to serialize process of plugins release - save state of the process at any point. */ } +module.exports.interactive = interactive_plugins_release; // TODO: what is shared between plugin-release and platform-release helpers? factor out into util/lib/whatever helper modules /* http://git-wip-us.apache.org/repos/asf/cordova-coho/blob/0086213c/src/repo-reset.js ---------------------------------------------------------------------- diff --git a/src/repo-reset.js b/src/repo-reset.js index 7be21f0..0d54f76 100644 --- a/src/repo-reset.js +++ b/src/repo-reset.js @@ -55,50 +55,53 @@ module.exports = function*(argv) { } var branches = Array.isArray(argv.b) ? argv.b : [argv.b]; var repos = flagutil.computeReposFromFlag(argv.r); + yield module.exports.resetRepos(repos, branches); +} - function *cleanRepo(repo) { - for (var i = 0; i < branches.length; ++i) { - var branchName = branches[i]; - if (!(yield gitutil.localBranchExists(branchName))) { - continue; - } - // Commit local changes so that they can be restored if this was a mistake. - if (yield gitutil.pendingChangesExist()) { - print('Committing changes just in case resetting was a mistake.'); - yield executil.execHelper(executil.ARGS('git add --all .')); - yield executil.execHelper(executil.ARGS('git commit -m', 'Automatically committed by coho repo-reset')); - } - - if (yield gitutil.remoteBranchExists(repo, branchName)) { - yield gitutil.gitCheckout(branchName); - var changes = yield executil.execHelper(executil.ARGS('git log --oneline ' + repo.remoteName + '/' + branchName + '..' + branchName)); - if (changes) { - print(repo.repoName + ' on branch ' + branchName + ': Local commits exist. Resetting.'); - yield executil.execHelper(executil.ARGS('git reset --hard ' + repo.remoteName + '/' + branchName)); - } else { - print(repo.repoName + ' on branch ' + branchName + ': No local commits to reset.'); - } - } else { - if ((yield gitutil.retrieveCurrentBranchName()) == branchName) { - yield gitutil.gitCheckout('master'); - } - print(repo.repoName + ' deleting local-only branch ' + branchName + '.'); - yield executil.execHelper(executil.ARGS('git log --oneline -3 ' + branchName)); - yield executil.execHelper(executil.ARGS('git branch -D ' + branchName)); - } - } - } +module.exports.resetRepos = function*(repos, branches) { yield repoutil.forEachRepo(repos, function*(repo) { // Determine remote name. yield repoupdate.updateRepos([repo], [], true); var branchName = yield gitutil.retrieveCurrentBranchName(); if (branches.indexOf(branchName) == -1) { yield gitutil.stashAndPop(repo, function*() { - yield cleanRepo(repo); + yield cleanRepo(repo, branches); }); } else { - yield cleanRepo(repo); + yield cleanRepo(repo, branches); } }); -} +}; +function *cleanRepo(repo, branches) { + for (var i = 0; i < branches.length; ++i) { + var branchName = branches[i]; + if (!(yield gitutil.localBranchExists(branchName))) { + continue; + } + // Commit local changes so that they can be restored if this was a mistake. + if (yield gitutil.pendingChangesExist()) { + print('Committing changes just in case resetting was a mistake.'); + yield executil.execHelper(executil.ARGS('git add --all .')); + yield executil.execHelper(executil.ARGS('git commit -m', 'Automatically committed by coho repo-reset')); + } + + if (yield gitutil.remoteBranchExists(repo, branchName)) { + yield gitutil.gitCheckout(branchName); + var changes = yield executil.execHelper(executil.ARGS('git log --oneline ' + repo.remoteName + '/' + branchName + '..' + branchName)); + if (changes) { + print(repo.repoName + ' on branch ' + branchName + ': Local commits exist. Resetting.'); + yield executil.execHelper(executil.ARGS('git reset --hard ' + repo.remoteName + '/' + branchName)); + } else { + print(repo.repoName + ' on branch ' + branchName + ': No local commits to reset.'); + } + } else { + if ((yield gitutil.retrieveCurrentBranchName()) == branchName) { + yield gitutil.gitCheckout('master'); + } + print(repo.repoName + ' deleting local-only branch ' + branchName + '.'); + yield executil.execHelper(executil.ARGS('git log --oneline -3 ' + branchName)); + yield executil.execHelper(executil.ARGS('git branch -D ' + branchName)); + } + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
