import Command from '@oclif/command'; import chalk from 'chalk'; import { Messages, MessageInfo } from './verbose_message'; import { System } from './system'; export interface ConfigSystem { createSystem(): System; } export interface ConfigMessages { createMessages(): Messages; } export interface ConfigChalk { createChalk(): chalk.Chalk; } /** * Extend oclif Command slightly to match Airtable's async method and function * naming scheme and creating a point to get or initialize a System interface * for operations with the Host. */ export default abstract class AirtableCommand extends Command { system: System; messages: Messages; chalk: chalk.Chalk; errorMessage(message: Message, options?: Parameters[1]): never; logMessage(message: Message): void; warnMessage(message: Message): void; init(): Promise; run(): Promise; catch(err: Error): Promise; finally(err: Error | undefined): Promise; initAsync(): Promise; abstract runAsync(): Promise; catchAsync(err: Error): Promise; finallyAsync?(err: Error | undefined): Promise; }