[ 
https://issues.apache.org/jira/browse/CB-8499?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14334295#comment-14334295
 ] 

ASF GitHub Bot commented on CB-8499:
------------------------------------

Github user agrieve commented on a diff in the pull request:

    https://github.com/apache/cordova-lib/pull/170#discussion_r25224693
  
    --- Diff: cordova-lib/src/cordova/platform_metadata.js ---
    @@ -0,0 +1,102 @@
    +/**
    +    Licensed to the Apache Software Foundation (ASF) under one
    +    or more contributor license agreements.  See the NOTICE file
    +    distributed with this work for additional information
    +    regarding copyright ownership.  The ASF licenses this file
    +    to you under the Apache License, Version 2.0 (the
    +    "License"); you may not use this file except in compliance
    +    with the License.  You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +    Unless required by applicable law or agreed to in writing,
    +    software distributed under the License is distributed on an
    +    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +    KIND, either express or implied.  See the License for the
    +    specific language governing permissions and limitations
    +    under the License.
    +*/
    +
    +
    +var path         = require('path'),
    +    cordova_util = require('./util'),
    +    fs           = require('fs'),
    +    Q            = require('q'),
    +    shelljs      = require('shelljs');
    +
    +
    +// Retrieves the platforms and their versions from the platforms.json file
    +// Returns an array of {platform: platform, version: version} ...
    +// ... where version could be '3.4.0', '/path/to/platform' or 'git://...'
    +function getVersions(projectRoot) {
    +    var platformsDir = path.join(projectRoot, 'platforms');
    +    var platformsJsonFile = path.join(platformsDir, 'platforms.json');
    +
    +    // If the platforms.json file doesn't exist, retrieve versions from 
platforms installed on the filesystem...
    +    // ...Note that in this case, we won't be able to know what 
source(folder, git-url) the platform came from, we'll just use versions
    +    return getPlatVersionsFromFile(platformsJsonFile).fail(function(){
    +        return getPlatVersionsFromFileSystem(projectRoot);
    +    });
    +}
    +
    +// Returns a promise
    +function getPlatVersionsFromFile(platformsJsonFile){
    +    var platformData = require(platformsJsonFile);
    +    var platformVersions = [];
    +    
    +    platformVersions = Object.keys(platformData).map(function(p){
    +        return {platform: p, version: platformData[p]};
    +    });
    +
    +    return Q(platformVersions);
    +}
    +
    +// Returns a promise
    +function getPlatVersionsFromFileSystem(projectRoot){
    +    var platformVersions = [];
    +    var platforms_on_fs = cordova_util.listPlatforms(projectRoot);
    +    platforms_on_fs.forEach(function(platform){
    +        var script = path.join(projectRoot, 'platforms', platform, 
'cordova', 'version');
    +        
    +        // Use version script to retrieve installed version of the platform
    +        var version = shelljs.exec(script).output;
    --- End diff --
    
    `shelljs.exec` is known to have poor performance and lead to EMFILE 
exceptions. Please use child_process.exec() instead


> 'cordova platform save' : should save all installed platforms to config.xml
> ---------------------------------------------------------------------------
>
>                 Key: CB-8499
>                 URL: https://issues.apache.org/jira/browse/CB-8499
>             Project: Apache Cordova
>          Issue Type: New Feature
>            Reporter: Omar Mefire
>            Assignee: Omar Mefire
>
> In addition to using 'cordova platform add android --save' to both add and 
> save a platform to config.xml, It would be useful to have a way to 'mass 
> save' already installed platforms to config.xml.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to