#!/usr/bin/env node

/*
 *
 * Copyright 2013 Canonical Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
*/

var path = require('path');
var check_reqs = require('./lib/check_reqs').check_reqs;
var PLATFORMS = require('./lib/constants').PLATFORM_TYPES;
var run = require('./lib/run').run;

var root = path.resolve();
var www = path.join(root, 'www');

check_reqs(function () {
    var argv = require('optimist').boolean(['device', 'emulator', 'debug', 'nobuild', 'verbose']).string(['target', 'framework']).argv;
    if (argv.verbose) {
      require('./lib/config').verboseMode();
    }
    return run(root, !argv.device, argv.debug, argv.target, argv.nobuild, argv.emulator, argv.framework);
});
