cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cmarcelk <...@git.apache.org>
Subject [GitHub] cordova-mobile-spec pull request: CB-6437[Improvements & support f...
Date Tue, 15 Apr 2014 15:46:40 GMT
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.
---

Mime
View raw message