blob: 0846231d82da31415aeb59b808fe29fcc2219296 [file] [log] [blame]
#!/usr/bin/env node
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 fs = require('fs');
var path = require('path');
var url = require('url');
var cordovaServe = require('cordova-serve');
module.exports.run = function (args) {
// defaults
args.port = args.port || 8000;
args.target = args.target || 'default'; // make default the system browser
args.noLogOutput = args.silent || false;
var wwwPath = path.join(__dirname, '../../www');
var manifestFilePath = path.resolve(path.join(wwwPath, 'manifest.json'));
var startPage;
// get start page from manifest
if (fs.existsSync(manifestFilePath)) {
try {
var manifest = require(manifestFilePath);
startPage = manifest.start_url;
} catch (err) {
console.log('failed to require manifest ... ' + err);
}
}
var server = cordovaServe();
server.servePlatform('browser', { port: args.port, noServerInfo: true, noLogOutput: args.noLogOutput })
.then(function () {
if (!startPage) {
// failing all else, set the default
startPage = 'index.html';
}
var projectUrl = (new url.URL(`http://localhost:${server.port}/${startPage}`)).href;
console.log('startPage = ' + startPage);
console.log('Static file server running @ ' + projectUrl + '\nCTRL + C to shut down');
return server.launchBrowser({ 'target': args.target, 'url': projectUrl });
})
.catch(function (error) {
console.log(error.message || error.toString());
if (server.server) {
server.server.close();
}
});
};