Github user martincgg commented on a diff in the pull request:
https://github.com/apache/cordova-cli/pull/151#discussion_r11260643
--- Diff: src/info.js ---
@@ -16,123 +16,99 @@
specific language governing permissions and limitations
under the License.
*/
-var cordova_util = require('./util'),
- shell = require('shelljs'),
- path = require('path'),
- fs = require('fs'),
- Q = require('q'),
- events = require('./events');
-
-/*
- A utility funciton to help output the information needed
- when submitting a help request.
-
- Outputs to a file
-*/
+ var cordova_util = require('./util'),
+ path = require('path'),
+ fs = require('fs'),
+ child_process = require('child_process'),
+ Q = require('q'),
+ info_utils = require('./info-utils');
+
+ /*
+ A utility funciton to help output the information needed
+ when submitting a help request.
+
+ Outputs to a file
+ */
module.exports = function info() {
-
- //Get the template
- var projectRoot = cordova_util.cdProjectRoot();
-
- var raw = fs.readFileSync(path.join(__dirname, '..', 'doc',
'info.txt'), 'utf-8').split("\n"),
+ //Get projectRoot
+ var projectRoot = cordova_util.cdProjectRoot(),
output;
-
- output = raw.map(function(line) {
- if(line.match(' %') ) {
- var type = (line.substr(5)).replace("\r",""),
- out = "";
-
- switch(type) {
- case "Node":
- out = shell.exec('node --version',{silent:true}).output;
- break;
- case "Cordova":
- out = require('../package').version;
- break;
- case "Config":
- out = fs.readFileSync(
cordova_util.projectConfig(projectRoot) );
- break;
- case "Platforms":
- out = doPlatforms( projectRoot );
- break;
- case "Plugins":
- out = doPlugins( projectRoot );
- break;
- default:
- break;
- }
- return line.replace( "%"+type, out );
- } else {
- return line;
+ if (!projectRoot) {
+ return Q.reject( new Error('Current working directory is not a
Cordova-based project.') );
}
- }).join("\n");
- // /*
- // Write to File;
- // */
- events.emit('results', output);
- fs.writeFileSync('info.txt', output );
- return Q();
+ delLog(projectRoot);
+ //Array of functions, Q.allSettled
+ return Q.allSettled([ (function (){
+ console.log("Collecting Data...");
+ //Get Node version
+ return (Q.denodeify (info_utils.getNodeInfo)());
--- End diff --
Well, Ok I can do it without any problem, but I've leave it in that way,
because all the promises are requested at time, then, all callbacks are
processed asynchronously, so Q.allSettled, it will wait until every promises is
recovered, meanwhile the callbacks completed, so it won't be necessary wait
until the first promise is complete, to get the next one, I like it in that
way, just because all callbacks are sent and the promises are retrieved when
callbacks are completed, not waiting for execution one after another, that's
the reason why I have implemented in that way.
But no problem, just confirm me please, are you sure that it would be
better, if I change the whole methods to promises?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---