@tableau/taco-toolkit
Version:
Tableau Connector Toolkit
57 lines • 4.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addLoggingOptions = exports.createScriptCommand = void 0;
var commander_1 = require("commander");
var connector_1 = require("../taco-commands/utils/connector");
var logging_1 = require("../taco-commands/utils/logging");
function createScriptCommand(name, description, config) {
var program = new commander_1.Command(name).description(description).configureHelp({
sortOptions: true,
});
var loggingOptions = config.loggingOptions, handler = config.handler, setup = config.setup;
// add the argument and options in the setup stage
if (setup) {
setup(program);
}
addLoggingOptions(program, loggingOptions);
// register handlers
program.action(function () {
if (loggingOptions) {
var loggerConfig = createLoggerConfig(program, loggingOptions);
(0, logging_1.initLogger)(loggerConfig);
}
handler(program);
});
return program;
}
exports.createScriptCommand = createScriptCommand;
function createLoggerConfig(program, loggingOptions) {
var options = program.optsWithGlobals();
var verbose = options.verbose;
if (loggingOptions.logLevel) {
var tacoRootPath = (0, connector_1.findTacoRootPath)();
return {
verbose: verbose,
fileLogLevel: options.logLevel,
fileLogDirPath: (0, logging_1.getLogPath)(tacoRootPath),
};
}
return {
verbose: verbose,
};
}
function addLoggingOptions(program, loggingOptions) {
if (loggingOptions === undefined) {
return program;
}
var verbose = loggingOptions.verbose, logLevel = loggingOptions.logLevel;
if (verbose) {
program.option('-v, --verbose', 'run this command in verbose mode', false);
}
if (logLevel) {
program.addOption(new commander_1.Option('--log-level <level>', 'set the logging level to one of the following choices').choices(Object.keys(logging_1.cliLogLevel)));
}
return program;
}
exports.addLoggingOptions = addLoggingOptions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvdGFjby1zY3JpcHRzL2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQTJDO0FBRTNDLDhEQUFtRTtBQUNuRSwwREFBcUc7QUFtQnJHLFNBQWdCLG1CQUFtQixDQUFDLElBQVksRUFBRSxXQUFtQixFQUFFLE1BQXFCO0lBQzFGLElBQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ3ZFLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUMsQ0FBQTtJQUVNLElBQUEsY0FBYyxHQUFxQixNQUFNLGVBQTNCLEVBQUUsT0FBTyxHQUFZLE1BQU0sUUFBbEIsRUFBRSxLQUFLLEdBQUssTUFBTSxNQUFYLENBQVc7SUFFakQsa0RBQWtEO0lBQ2xELElBQUksS0FBSyxFQUFFO1FBQ1QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQ2Y7SUFFRCxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFFMUMsb0JBQW9CO0lBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDYixJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUE7WUFDaEUsSUFBQSxvQkFBVSxFQUFDLFlBQVksQ0FBQyxDQUFBO1NBQ3pCO1FBRUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2xCLENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQXpCRCxrREF5QkM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsY0FBOEI7SUFDMUUsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ2pDLElBQUEsT0FBTyxHQUFLLE9BQU8sUUFBWixDQUFZO0lBRTNCLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRTtRQUMzQixJQUFNLFlBQVksR0FBRyxJQUFBLDRCQUFnQixHQUFFLENBQUE7UUFFdkMsT0FBTztZQUNMLE9BQU8sU0FBQTtZQUNQLFlBQVksRUFBRSxPQUFPLENBQUMsUUFBUTtZQUM5QixjQUFjLEVBQUUsSUFBQSxvQkFBVSxFQUFDLFlBQVksQ0FBQztTQUN6QyxDQUFBO0tBQ0Y7SUFFRCxPQUFPO1FBQ0wsT0FBTyxTQUFBO0tBQ1IsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxPQUFnQixFQUFFLGNBQTBDO0lBQzVGLElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtRQUNoQyxPQUFPLE9BQU8sQ0FBQTtLQUNmO0lBRU8sSUFBQSxPQUFPLEdBQWUsY0FBYyxRQUE3QixFQUFFLFFBQVEsR0FBSyxjQUFjLFNBQW5CLENBQW1CO0lBQzVDLElBQUksT0FBTyxFQUFFO1FBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLENBQUE7S0FDM0U7SUFFRCxJQUFJLFFBQVEsRUFBRTtRQUNaLE9BQU8sQ0FBQyxTQUFTLENBQ2YsSUFBSSxrQkFBTSxDQUFDLHFCQUFxQixFQUFFLHVEQUF1RCxDQUFDLENBQUMsT0FBTyxDQUNoRyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFXLENBQUMsQ0FDekIsQ0FDRixDQUFBO0tBQ0Y7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDO0FBbEJELDhDQWtCQyJ9