[ 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)