Return-Path: X-Original-To: apmail-cordova-dev-archive@www.apache.org Delivered-To: apmail-cordova-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C44D511EA3 for ; Tue, 15 Apr 2014 15:46:41 +0000 (UTC) Received: (qmail 91887 invoked by uid 500); 15 Apr 2014 15:46:40 -0000 Delivered-To: apmail-cordova-dev-archive@cordova.apache.org Received: (qmail 91851 invoked by uid 500); 15 Apr 2014 15:46:40 -0000 Mailing-List: contact dev-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list dev@cordova.apache.org Received: (qmail 91843 invoked by uid 500); 15 Apr 2014 15:46:40 -0000 Delivered-To: apmail-incubator-callback-dev@incubator.apache.org Received: (qmail 91840 invoked by uid 99); 15 Apr 2014 15:46:40 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Apr 2014 15:46:40 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 1C52A8BC8FE; Tue, 15 Apr 2014 15:46:40 +0000 (UTC) From: cmarcelk To: callback-dev@incubator.apache.org Reply-To: callback-dev@incubator.apache.org References: In-Reply-To: Subject: [GitHub] cordova-mobile-spec pull request: CB-6437[Improvements & support f... Content-Type: text/plain Message-Id: <20140415154640.1C52A8BC8FE@tyr.zones.apache.org> Date: Tue, 15 Apr 2014 15:46:40 +0000 (UTC) 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. --- 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 infrastructure@apache.org or file a JIRA ticket with INFRA. ---