import AppClass from '../../../lib/src/lifecycle/AppClass.ts' import {Logging} from '../../../lib/src/service/logging/Logging.ts' import {parseArgs} from '../../../lib/src/external/std.ts' export type ParsedArguments = { [key: string]: string | number | Array } export abstract class Directive extends AppClass { public abstract readonly keyword: string public abstract readonly help: string protected argv: string[] = [] protected parsed_argv: ParsedArguments = {} static options() { return [] } public prepare(argv: string[], parsed_arguments: ParsedArguments) { this.argv = argv this.parsed_argv = parsed_arguments } public abstract invoke(): any success(message: any) { this.make(Logging).success(message, true) } error(message: any) { this.make(Logging).error(message, true) } warn(message: any) { this.make(Logging).warn(message, true) } info(message: any) { this.make(Logging).info(message, true) } debug(message: any) { this.make(Logging).debug(message, true) } verbose(message: any) { this.make(Logging).verbose(message, true) } }