#!/usr/bin/env node import { MrCliDebug as d } from './debug'; d.markEntry(); import { Cli } from '@cirrusct/cli'; import { createError } from '@cirrusct/mr-core'; import { MrProgram } from '@cirrusct/mr-program'; import { createCliProgramDefinition } from './cliProgram'; import { createLogger, preParseCliOptions } from './init'; import { printErrorAndExit } from './lib'; (async () => { try { const { cwd, logLevel } = preParseCliOptions(); const logger = createLogger(logLevel); d.setLogger(logger); d.markStartMrProgramStart(); const program = await MrProgram.create(logger, cwd); d.markStartMrProgramEnd(); const mrService = program.mrService; d.markCreateCliProgramDefinitionStart(); const cliProgram = createCliProgramDefinition(mrService); d.markCreateCliProgramDefinitionEnd(); d.markParseCliStart(); const parsed = Cli.parse(cliProgram, program.version, {}); logger.debug( { commandName: parsed.parsedCommandName, options: parsed.options, arguments: parsed.arguments, }, 'Parsed Command Line' ); d.markParseCliEnd(); try { d.markRunCommandStart(); const runResult = await parsed.run(); d.markRunCommandEnd(); process.exit(runResult.exitCode); } catch (e) { // handler error printErrorAndExit(createError(`${parsed.command.name} command failed!`, e)); } } catch (e) { // initialization error printErrorAndExit(createError(`mr cli initialization Failed`, e)); } })();