@the-goat/core
Version:
    • 2.14 kB
TypeScript
import { Command } from 'commander';
import { JSONSchema6 } from 'json-schema';
import GoatEvents from './events/GoatEvents';
import { IGoatExternalProjectConfig } from './config';
interface IGoatTaskOption {
allowOnOnce?: boolean;
allowOnWatch?: boolean;
flags: string;
label: string;
}
export declare type TGoatTaskMethodConfig = GoatTask & {
options: Command;
};
interface IGoatTaskConfig {
name: string;
description: string;
schema: JSONSchema6;
init?: {
files?: () => {
files: {
destination: string;
name: string;
data: string | Uint8Array;
}[];
};
};
command: string;
method: (command: TGoatTaskMethodConfig) => Promise<void>;
watch?: (command: TGoatTaskMethodConfig) => void;
options?: IGoatTaskOption[];
}
/**
* Class defining all Goat tasks
*/
export default class GoatTask {
name: string;
private key;
description: string;
schema: JSONSchema6;
path: string;
init?: {
files?: () => {
files: {
destination: string;
name: string;
data: string | Uint8Array;
}[];
};
};
configuration: IGoatExternalProjectConfig;
private readonly command;
readonly method: (command: TGoatTaskMethodConfig) => Promise<void>;
readonly watch?: (command: TGoatTaskMethodConfig) => void;
events: GoatEvents;
options: IGoatTaskOption[];
constructor(build: IGoatTaskConfig);
/**
* Build the commander command object
*/
private buildCommand;
/**
* Method to be executed by running Goat command.
*/
action(config: any): void | Promise<void>;
/**
* Goat configuration object of the current project
*/
private getConfiguration;
/**
* Forms the base of all Goat actions,
*/
actionBase(config: Command): Promise<void>;
/**
* Base function for watch tasks
*/
watchBase(config: Command, events: GoatEvents): void;
/**
* Build command
*/
getCommand(): Command;
}
export {};