@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
75 lines • 3.42 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.run = run;
const mercury_client_1 = require("@sprucelabs/mercury-client");
const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils");
const commander_1 = require("commander");
require("./addons/filePrompt.addon");
const dotenv_1 = __importDefault(require("dotenv"));
const Cli_1 = __importDefault(require("./cli/Cli"));
const constants_1 = require("./constants");
const FeatureInstaller_1 = require("./features/FeatureInstaller");
const InFlightEntertainment_1 = __importDefault(require("./InFlightEntertainment"));
const TerminalInterface_1 = __importDefault(require("./interfaces/TerminalInterface"));
const CommandService_1 = __importDefault(require("./services/CommandService"));
async function run(argv = []) {
const program = new commander_1.Command();
let cwd = process.cwd();
program.storeOptionsAsProperties(false);
program.option('--no-color', 'Disable color output in the console');
program.option('-d, --directory <path>', 'The working directory to execute the command');
program.option('-v, --version', 'The version of the cli');
const dirIdx = process.argv.findIndex((v) => v === '--directory' || v === '-d');
if (dirIdx > -1) {
const dir = process.argv[dirIdx + 1];
const newCwd = spruce_skill_utils_1.diskUtil.resolvePath(cwd, dir);
cwd = newCwd;
}
const terminal = new TerminalInterface_1.default(cwd, process.env.CLI_RENDER_STACK_TRACES !== 'false');
terminal.clear();
terminal.renderHero(constants_1.CLI_HERO);
const isAskingForVersion = process.argv.findIndex((v) => v === '--version' || v === '-v') > -1;
if (isAskingForVersion) {
const json = require('../package.json');
terminal.renderHeadline(`Version ${json.version}`);
return;
}
dotenv_1.default.config({
path: spruce_skill_utils_1.diskUtil.resolvePath(cwd, '.env'),
quiet: true,
});
await Cli_1.default.Boot({
program,
cwd,
host: process.env.HOST,
graphicsInterface: terminal,
});
await setupInFlightEntertainment(terminal);
const command = await program.parseAsync(argv);
//@ts-ignore
const results = await command._actionResults[0];
for (const client of mercury_client_1.MercuryClientFactory.getClients()) {
await client.disconnect();
}
return results;
}
async function setupInFlightEntertainment(ui) {
if (TerminalInterface_1.default.doesSupportColor() &&
process.env.ENABLE_INSTALL_ENTERTAINMENT !== 'false') {
const command = new CommandService_1.default(spruce_skill_utils_1.diskUtil.resolvePath(__dirname, '../'));
InFlightEntertainment_1.default.setup({ command, ui });
FeatureInstaller_1.FeatureInstallerImpl.startInFlightIntertainmentHandler = (didUpdateHandler) => {
InFlightEntertainment_1.default.start();
didUpdateHandler((message) => {
InFlightEntertainment_1.default.writeStatus(message);
});
};
FeatureInstaller_1.FeatureInstallerImpl.stopInFlightIntertainmentHandler = () => {
InFlightEntertainment_1.default.stop();
};
}
}
//# sourceMappingURL=boot.js.map
;