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

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

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

    https://github.com/apache/cordova-mobile-spec/pull/55#discussion_r11817282
  
    --- Diff: createmobilespec/createmobilespec.js ---
    @@ -17,99 +16,197 @@
         KIND, either express or implied.  See the License for the
         specific language governing permissions and limitations
         under the License.
    -*/
    +     */
     
    -var fs = require('fs'),
    -    path = require('path'),
    +var fs            = require("fs"),
    +    path          = require("path"),
    +    child_process = require("child_process"),
         shelljs,
         optimist;
    +
    +// Dependencies requirements check
     try {
    -    shelljs = require('shelljs');
    -    optimist = require('optimist');
    +    shelljs = require("shelljs");
    +    optimist = require("optimist");
     } catch (e) {
    -    console.error('Missing module. Please run "npm install" from this 
directory:\n\t' +
    +    console.error('Missing module. Please run \"npm install\" from this 
directory:\n\t' +
                        path.dirname(__dirname));
         process.exit(2);
     }
    -
    -var tokens = process.argv.slice(2);
    -var argv = optimist(tokens)
    -           .default('android', false)
    -           .default('ios', false)
    -           .usage('Usage: $0 [--android] [--ios]\nDefault is to use 
Android and iOS.')
    -           .argv;
    -// preserve the original behavior when there are no args
    -if (tokens.length === 0) {
    -    argv.android = true;
    -    argv.ios = true;
    +// Print relevant information
    +console.log("Creating \"mobilespec\" project. If you have any errors, it 
may be from missing repositories.");
    +console.log("To clone needed repositories:");
    +console.log("  ./cordova-coho/coho repo-clone -r plugins -r mobile-spec -r 
android -r ios -r cli");
    +console.log("To update all repositories:");
    +console.log("  ./cordova-coho/coho repo-update");
    +
    +// Setting up vars, folders and libraries, to ensure full compatibility 
cross platform, absolute paths are used instead of relative paths
    +
    +// Cordova Coho dir, it should contain all libraries and required 
repositories
    +// [cordova-cli, cordova-android, cordova-blackberry, cordova-ios, 
cordova-windows, cordova-windows8, all plugins libraries, cordova-mobile-spec, 
cordova-js]
    +// searchDir function it was added, to look for cordova-coho folder 
backwards, for cases like absolute/path/cordova-coho/cordova-coho/...All 
libraries
    +// This is to make sure that cordova-coho exists and it's the right one.
    +var mainModDir     = process.cwd(),
    +    coho_dir       = searchDir(mainModDir, "cordova-coho"),
    +    cordova_cli    = path.join(coho_dir, "cordova-cli", "bin", "cordova"),
    +    cordova_ms     = path.join(coho_dir, "cordova-mobile-spec"),
    +    cordova_js     = path.join(coho_dir, "cordova-js"),
    +    ms_project_dir = path.join(coho_dir, "mobilespec"),
    +    platforms      = [],
    +//Setting up optimist features
    +    tokens         = process.argv.slice(2),
    +    argv           = optimist(tokens)
    +                     .usage("Usage: $0 [--platform].")
    +                     .argv;
    +
    +// Main libraries and path"s requirements check
    +if (!fs.existsSync(coho_dir)) {
    +    console.log("Please run this script from the directory that contains 
cordova-coho");
    +    shelljs.exit(1);
     }
    -var platforms = [];
    -if (argv.android) { platforms.push('android'); }
    -if (argv.ios) { platforms.push('ios'); }
     
    -if (!fs.existsSync('cordova-mobile-spec')) {
    -    console.log('Please run this script from the directory that contains 
cordova-mobile-spec');
    +if (!fs.existsSync(cordova_ms)) {
    +    console.log("Please run this script from the directory that contains 
cordova-mobile-spec");
         shelljs.exit(1);
     }
     
    -if (fs.existsSync('mobilespec')) {
    -    console.log('Directory "mobilespec" already exists. Delete it first 
then re-run.');
    +if (!fs.existsSync(cordova_js)) {
    +    console.log("Please run this script from the directory that contains 
cordova-js");
         shelljs.exit(1);
     }
     
    -console.log('Creating mobilespec project. If you have any errors, it may 
be from missing repositories.');
    -console.log('To clone needed repositories:');
    -console.log("  ./cordova-coho/coho repo-clone -r plugins -r mobile-spec -r 
cli -r " + platforms.join(' -r '));
    -console.log('To update all repositories:');
    -console.log('  ./cordova-coho/coho repo-update');
    +// No arguments throws error
    +if (tokens.length === 0) {
    +    throw new Error('No arguments found');
    +}
    +if (argv.help) {console.log("Usage: createmobilespec --platformName"); 
return;}
    +if (argv.android) { platforms.push("android");}
    +if (argv.ios) { platforms.push("ios");}
    +if (argv.blackberry10) { platforms.push("blackberry10");}
    +if (argv.wp8) { platforms.push("wp8");}
    +if (argv.windows8) { platforms.push("windows8");}
    +
    +if (platforms.length === 0){
    +    throw new Error ('No supported platforms');
    +}
     
    -var repoParent = process.cwd();
    +// Setting up config.fatal as true, if something goes wrong the program it 
will terminate
     shelljs.config.fatal = true;
     
    -shelljs.exec('./cordova-cli/bin/cordova create mobilespec --link-to 
cordova-mobile-spec');
    +// Custom function to delete project folder, using recursive actions
    +try {
    +    delFileSync(ms_project_dir);
    +} catch (e) {
    +    //The project directory after an android build and emulation is locked 
by ADB.exe (Android Debug Bridge).
    +    //Kill the process & restart folder deletion
    +        console.log("Not all files were deleted, killing Adb.exe process 
to unlock project folder ...");
    +        if (/^win/.test(process.platform)) {
    +        shelljs.exec("TASKKILL /F /IM ADB.exe /T");
    +        delFileSync(ms_project_dir);
    +        }else
    +            throw new Error("Error during folder deletion, try to remove 
mobilespec project folder manually");
    +    }
     
    -shelljs.pushd('cordova-js');
    -shelljs.exec('grunt');
    -shelljs.popd();
    +// Creating the project, linked to cordova-mobile-spec library
    +shelljs.pushd(coho_dir);
    +shelljs.exec(cordova_cli + " create mobilespec 
org.apache.cordova.mobilespec MobileSpec_Tests --link-to cordova-mobile-spec");
     
    -shelljs.pushd('mobilespec');
    +// Executing grunt task, to generate updated js files for each platform
    +shelljs.pushd(cordova_js);
    +shelljs.exec("grunt");
    +
    +shelljs.pushd(ms_project_dir);
    --- End diff --
    
    Consider doing a popd if the directory in the pushd is no longer needed.


> [Mobilespec] improve and add support for blackberry, wp8, windows8
> ------------------------------------------------------------------
>
>                 Key: CB-6437
>                 URL: https://issues.apache.org/jira/browse/CB-6437
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: BlackBerry, mobile-spec, Windows 8, WP8
>    Affects Versions: 3.4.0
>            Reporter: Martin Gonzalez
>            Assignee: Martin Gonzalez
>              Labels: blackberry10, mobilespec,, module, node, support, 
> windows8, wp8
>             Fix For: 3.5.0
>
>
> The new node module for Mobilespecs can be improved.
> -Adding more functionality
> -Supporting platforms as blackberry10, windows phone 8 and windows 8.
> -Add functionality to automate some process as well.
> -Add functionality to add platforms according to the development environment 
> --- Android, Blackberry, iOS ---> Mac.
> --- Android, Blackberry, Windows 8, Windows Phone 8 ---> Windows 8.
> --- Android, Blackberry ---> Linux or any other Windows OS.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to