polymer-cli
Version:
A commandline tool for Polymer projects
58 lines (47 loc) • 1.94 kB
text/typescript
/**
* @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
*/
// 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.
import {ArgDescriptor} from 'command-line-args';
import * as logging from 'plylog';
import {ProjectConfig} from 'polymer-project-config';
import {Command, CommandOptions} from './command';
const logger = logging.getLogger('cli.command.init');
export class InitCommand implements Command {
name = 'init';
aliases = [];
description = 'Initializes a Polymer project';
args: ArgDescriptor[] = [{
name: 'name',
description: 'The template name to use to initialize the project',
type: String,
defaultOption: true,
}];
async run(options: CommandOptions, _config: ProjectConfig) {
// Defer dependency loading until needed
const polymerInit = await import('../init/init');
const templateName = options['name'];
if (templateName) {
const subgen = (templateName.indexOf(':') !== -1) ? '' : ':app';
const generatorName = `polymer-init-${templateName}${subgen}`;
logger.debug('template name provided', {
generator: generatorName,
template: templateName,
});
return polymerInit.runGenerator(generatorName, options);
}
logger.debug('no template name provided, prompting user...');
return polymerInit.promptGeneratorSelection();
}
}