polymer-cli
Version:
A commandline tool for Polymer projects
104 lines • 5.03 kB
JavaScript
;
/**
* @license
* Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
// Be careful with these imports. As many as possible should be dynamic imports
// in the run method in order to minimize startup time from loading unused code.
const logging = require("plylog");
const args_1 = require("polyserve/lib/args");
const logger = logging.getLogger('cli.command.serve');
class ServeCommand {
constructor() {
this.name = 'serve';
this.aliases = [];
this.description = 'Runs the polyserve development server';
this.args = args_1.args;
}
run(options, config) {
return __awaiter(this, void 0, void 0, function* () {
// Defer dependency loading until this specific command is run
const polyserve = yield Promise.resolve().then(() => require('polyserve'));
const startServers = polyserve.startServers;
const getServerUrls = polyserve.getServerUrls;
const url = yield Promise.resolve().then(() => require('url'));
let openPath;
if (config.entrypoint && config.shell) {
openPath = config.entrypoint.substring(config.root.length);
if (openPath === 'index.html' || openPath === '/index.html') {
openPath = '/';
}
}
// TODO(justinfagnani): Consolidate args handling between polymer-cli and
// polyserve's CLI.
const proxyArgs = {
path: options['proxy-path'],
target: options['proxy-target']
};
const serverOptions = {
root: options['root'],
allowOrigin: options['allow-origin'],
entrypoint: config.entrypoint,
compile: options['compile'],
port: options['port'],
hostname: options['hostname'],
open: options['open'],
browser: options['browser'],
openPath: options['open-path'],
npm: config.npm,
moduleResolution: config.moduleResolution,
componentDir: config.componentDir,
packageName: options['package-name'],
protocol: options['protocol'],
keyPath: options['key'],
certPath: options['cert'],
pushManifestPath: options['manifest'],
proxy: proxyArgs.path && proxyArgs.target && proxyArgs,
};
logger.debug('serving with options', serverOptions);
const env = options['env'];
if (env && env.serve) {
logger.debug('env.serve() found in options');
logger.debug('serving via env.serve()...');
return env.serve(serverOptions);
}
logger.debug('serving via polyserve.startServers()...');
const serverInfos = yield startServers(serverOptions);
if (serverInfos.kind === 'mainline') {
const mainlineServer = serverInfos;
const urls = getServerUrls(options, mainlineServer.server);
logger.info(`Files in this directory are available under the following URLs
applications: ${url.format(urls.serverUrl)}
reusable components: ${url.format(urls.componentUrl)}
`);
}
else {
// We started multiple servers, just tell the user about the control
// server, it serves out human-readable info on how to access the others.
const urls = getServerUrls(options, serverInfos.control.server);
logger.info(`Started multiple servers with different variants:
View the Polyserve console here: ${url.format(urls.serverUrl)}`);
}
});
}
}
exports.ServeCommand = ServeCommand;
//# sourceMappingURL=serve.js.map