| #!/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(); |
| } |
| }); |
| }; |