@angular/cli
Version:
CLI tool for Angular
70 lines (69 loc) • 8.1 kB
JavaScript
;
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = require("path");
const yargs_1 = __importDefault(require("yargs"));
const command_module_1 = require("../../command-builder/command-module");
const command_1 = require("../../command-builder/utilities/command");
const color_1 = require("../../utilities/color");
const completion_1 = require("../../utilities/completion");
const error_1 = require("../../utilities/error");
class CompletionCommandModule extends command_module_1.CommandModule {
constructor() {
super(...arguments);
this.command = 'completion';
this.describe = 'Set up Angular CLI autocompletion for your terminal.';
this.longDescriptionPath = (0, path_1.join)(__dirname, 'long-description.md');
}
builder(localYargs) {
return (0, command_1.addCommandModuleToYargs)(localYargs, CompletionScriptCommandModule, this.context);
}
async run() {
let rcFile;
try {
rcFile = await (0, completion_1.initializeAutocomplete)();
}
catch (err) {
(0, error_1.assertIsError)(err);
this.context.logger.error(err.message);
return 1;
}
this.context.logger.info(`
Appended \`source <(ng completion script)\` to \`${rcFile}\`. Restart your terminal or run the following to autocomplete \`ng\` commands:
${color_1.colors.yellow('source <(ng completion script)')}
`.trim());
if ((await (0, completion_1.hasGlobalCliInstall)()) === false) {
this.context.logger.warn('Setup completed successfully, but there does not seem to be a global install of the' +
' Angular CLI. For autocompletion to work, the CLI will need to be on your `$PATH`, which' +
' is typically done with the `-g` flag in `npm install -g @angular/cli`.' +
'\n\n' +
'For more information, see https://angular.io/cli/completion#global-install');
}
return 0;
}
}
exports.default = CompletionCommandModule;
class CompletionScriptCommandModule extends command_module_1.CommandModule {
constructor() {
super(...arguments);
this.command = 'script';
this.describe = 'Generate a bash and zsh real-time type-ahead autocompletion script.';
this.longDescriptionPath = undefined;
}
builder(localYargs) {
return localYargs;
}
run() {
yargs_1.default.showCompletionScript();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9jbGkvc3JjL2NvbW1hbmRzL2NvbXBsZXRpb24vY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7O0FBRUgsK0JBQTRCO0FBQzVCLGtEQUFvQztBQUNwQyx5RUFBa0c7QUFDbEcscUVBQWtGO0FBQ2xGLGlEQUErQztBQUMvQywyREFBeUY7QUFDekYsaURBQXNEO0FBRXRELE1BQXFCLHVCQUNuQixTQUFRLDhCQUFhO0lBRHZCOztRQUlFLFlBQU8sR0FBRyxZQUFZLENBQUM7UUFDdkIsYUFBUSxHQUFHLHNEQUFzRCxDQUFDO1FBQ2xFLHdCQUFtQixHQUFHLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBcUMvRCxDQUFDO0lBbkNDLE9BQU8sQ0FBQyxVQUFnQjtRQUN0QixPQUFPLElBQUEsaUNBQXVCLEVBQUMsVUFBVSxFQUFFLDZCQUE2QixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUc7UUFDUCxJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJO1lBQ0YsTUFBTSxHQUFHLE1BQU0sSUFBQSxtQ0FBc0IsR0FBRSxDQUFDO1NBQ3pDO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixJQUFBLHFCQUFhLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV2QyxPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QjttREFDNkMsTUFBTTs7TUFFbkQsY0FBTSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQztPQUM5QyxDQUFDLElBQUksRUFBRSxDQUNULENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxJQUFBLGdDQUFtQixHQUFFLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QixxRkFBcUY7Z0JBQ25GLDBGQUEwRjtnQkFDMUYseUVBQXlFO2dCQUN6RSxNQUFNO2dCQUNOLDRFQUE0RSxDQUMvRSxDQUFDO1NBQ0g7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDRjtBQTNDRCwwQ0EyQ0M7QUFFRCxNQUFNLDZCQUE4QixTQUFRLDhCQUFhO0lBQXpEOztRQUNFLFlBQU8sR0FBRyxRQUFRLENBQUM7UUFDbkIsYUFBUSxHQUFHLHFFQUFxRSxDQUFDO1FBQ2pGLHdCQUFtQixHQUFHLFNBQVMsQ0FBQztJQVNsQyxDQUFDO0lBUEMsT0FBTyxDQUFDLFVBQWdCO1FBQ3RCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxHQUFHO1FBQ0QsZUFBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB5YXJncywgeyBBcmd2IH0gZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgQ29tbWFuZE1vZHVsZSwgQ29tbWFuZE1vZHVsZUltcGxlbWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vY29tbWFuZC1idWlsZGVyL2NvbW1hbmQtbW9kdWxlJztcbmltcG9ydCB7IGFkZENvbW1hbmRNb2R1bGVUb1lhcmdzIH0gZnJvbSAnLi4vLi4vY29tbWFuZC1idWlsZGVyL3V0aWxpdGllcy9jb21tYW5kJztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jb2xvcic7XG5pbXBvcnQgeyBoYXNHbG9iYWxDbGlJbnN0YWxsLCBpbml0aWFsaXplQXV0b2NvbXBsZXRlIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbXBsZXRpb24nO1xuaW1wb3J0IHsgYXNzZXJ0SXNFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lcnJvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBsZXRpb25Db21tYW5kTW9kdWxlXG4gIGV4dGVuZHMgQ29tbWFuZE1vZHVsZVxuICBpbXBsZW1lbnRzIENvbW1hbmRNb2R1bGVJbXBsZW1lbnRhdGlvblxue1xuICBjb21tYW5kID0gJ2NvbXBsZXRpb24nO1xuICBkZXNjcmliZSA9ICdTZXQgdXAgQW5ndWxhciBDTEkgYXV0b2NvbXBsZXRpb24gZm9yIHlvdXIgdGVybWluYWwuJztcbiAgbG9uZ0Rlc2NyaXB0aW9uUGF0aCA9IGpvaW4oX19kaXJuYW1lLCAnbG9uZy1kZXNjcmlwdGlvbi5tZCcpO1xuXG4gIGJ1aWxkZXIobG9jYWxZYXJnczogQXJndik6IEFyZ3Yge1xuICAgIHJldHVybiBhZGRDb21tYW5kTW9kdWxlVG9ZYXJncyhsb2NhbFlhcmdzLCBDb21wbGV0aW9uU2NyaXB0Q29tbWFuZE1vZHVsZSwgdGhpcy5jb250ZXh0KTtcbiAgfVxuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCByY0ZpbGU6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgcmNGaWxlID0gYXdhaXQgaW5pdGlhbGl6ZUF1dG9jb21wbGV0ZSgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYXNzZXJ0SXNFcnJvcihlcnIpO1xuICAgICAgdGhpcy5jb250ZXh0LmxvZ2dlci5lcnJvcihlcnIubWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHRoaXMuY29udGV4dC5sb2dnZXIuaW5mbyhcbiAgICAgIGBcbkFwcGVuZGVkIFxcYHNvdXJjZSA8KG5nIGNvbXBsZXRpb24gc2NyaXB0KVxcYCB0byBcXGAke3JjRmlsZX1cXGAuIFJlc3RhcnQgeW91ciB0ZXJtaW5hbCBvciBydW4gdGhlIGZvbGxvd2luZyB0byBhdXRvY29tcGxldGUgXFxgbmdcXGAgY29tbWFuZHM6XG5cbiAgICAke2NvbG9ycy55ZWxsb3coJ3NvdXJjZSA8KG5nIGNvbXBsZXRpb24gc2NyaXB0KScpfVxuICAgICAgYC50cmltKCksXG4gICAgKTtcblxuICAgIGlmICgoYXdhaXQgaGFzR2xvYmFsQ2xpSW5zdGFsbCgpKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuY29udGV4dC5sb2dnZXIud2FybihcbiAgICAgICAgJ1NldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHksIGJ1dCB0aGVyZSBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgZ2xvYmFsIGluc3RhbGwgb2YgdGhlJyArXG4gICAgICAgICAgJyBBbmd1bGFyIENMSS4gRm9yIGF1dG9jb21wbGV0aW9uIHRvIHdvcmssIHRoZSBDTEkgd2lsbCBuZWVkIHRvIGJlIG9uIHlvdXIgYCRQQVRIYCwgd2hpY2gnICtcbiAgICAgICAgICAnIGlzIHR5cGljYWxseSBkb25lIHdpdGggdGhlIGAtZ2AgZmxhZyBpbiBgbnBtIGluc3RhbGwgLWcgQGFuZ3VsYXIvY2xpYC4nICtcbiAgICAgICAgICAnXFxuXFxuJyArXG4gICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2NsaS9jb21wbGV0aW9uI2dsb2JhbC1pbnN0YWxsJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuY2xhc3MgQ29tcGxldGlvblNjcmlwdENvbW1hbmRNb2R1bGUgZXh0ZW5kcyBDb21tYW5kTW9kdWxlIGltcGxlbWVudHMgQ29tbWFuZE1vZHVsZUltcGxlbWVudGF0aW9uIHtcbiAgY29tbWFuZCA9ICdzY3JpcHQnO1xuICBkZXNjcmliZSA9ICdHZW5lcmF0ZSBhIGJhc2ggYW5kIHpzaCByZWFsLXRpbWUgdHlwZS1haGVhZCBhdXRvY29tcGxldGlvbiBzY3JpcHQuJztcbiAgbG9uZ0Rlc2NyaXB0aW9uUGF0aCA9IHVuZGVmaW5lZDtcblxuICBidWlsZGVyKGxvY2FsWWFyZ3M6IEFyZ3YpOiBBcmd2IHtcbiAgICByZXR1cm4gbG9jYWxZYXJncztcbiAgfVxuXG4gIHJ1bigpOiB2b2lkIHtcbiAgICB5YXJncy5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICB9XG59XG4iXX0=