UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

75 lines 3.42 kB
"use strict"; 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