[ https://issues.apache.org/jira/browse/CB-6437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13969635#comment-13969635 ]
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_r11640926 --- Diff: createmobilespec/createmobilespec.js --- @@ -17,99 +16,215 @@ 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'), - shelljs, - optimist; + child_process = require('child_process'), + shelljs; + +// Dependencies requirements check try { shelljs = require('shelljs'); - optimist = require('optimist'); } catch (e) { console.error('Missing module. Please run "npm install" from this directory:\n\t' + - path.dirname(__dirname)); + 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; +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 +var mainModDir = process.cwd(), +// 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. +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(mainModDir, 'mobilespec')); + +// 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')) { +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'); +//Determine which platforms are available +// Default platforms [Android, Blackberry], both platforms works under Windows, Linux and Mac OS +cordovaPlatforms = ['android', 'blackberry10']; --- End diff -- When optimist was being used and the default behavior was to create both Android and iOS, that was just preserving the original behavior of the shell script when this ran only on OSX. Now that you are getting createmobilespec to work on Windows and Linux dev machines, it's probably wise to revisit that default behavior. I'd suggest that the new default is to create only the mobile platforms that are requested. For example "createmobilespec --android --blackberry10". If no args are specified, then exit with an error. These should be the same words used in the "cordova platform add" command, for consistency. And I would also suggest to have them be args instead of a menu, so that createmobilespec can be used by a parent script in a scenario such as Medic (continuous integration test). Interactive input would make that use case difficult. I see your point about checking which mobile platforms are appropriate for the dev workstation, but if the "cordova platform add" command is doing that checking already (which is what createmobilespec is calling anyway), then I would suggest to not bother implementing that check again here in createmobilespec, and just let the error bubble up from "cordova platform add". createmobilespec is going to be used only by people developing Cordova, so they should already have some knowledge of the basic rules, as compared to an app developer. So I think it is OK to let "cordova platform add" catch the issue instead of duplicating the "check" logic here, as long as the error does bubble up in a presentation that is comprehensible. > [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)