@anycli/config
Version:
base config object and standard interfaces for anycli components
136 lines (135 loc) • 3.61 kB
TypeScript
import { Command } from './command';
import { Hooks } from './hooks';
import { Manifest } from './manifest';
import { PJSON } from './pjson';
import { Topic } from './topic';
export interface Options {
root: string;
name?: string;
type?: string;
tag?: string;
ignoreManifest?: boolean;
}
export interface IPlugin {
/**
* @anycli/config version
*/
_base: string;
/**
* name from package.json
*/
name: string;
/**
* version from package.json
*
* example: 1.2.3
*/
version: string;
/**
* full package.json
*
* parsed with read-pkg
*/
pjson: PJSON.Plugin | PJSON.CLI;
/**
* used to tell the user how the plugin was installed
* examples: core, link, user, dev
*/
type: string;
/**
* base path of plugin
*/
root: string;
/**
* npm dist-tag of plugin
* only used for user plugins
*/
tag?: string;
/**
* subplugins of this plugin
*/
plugins: IPlugin[];
/**
* if it appears to be an npm package but does not look like it's really a CLI plugin, this is set to false
*/
valid: boolean;
readonly commands: Command.Plugin[];
readonly commandIDs: string[];
readonly topics: Topic[];
findCommand(id: string, opts: {
must: true;
}): Command.Plugin;
findCommand(id: string, opts?: {
must: boolean;
}): Command.Plugin | undefined;
findTopic(id: string, opts: {
must: true;
}): Topic;
findTopic(id: string, opts?: {
must: boolean;
}): Topic | undefined;
runHook<T extends Hooks, K extends keyof T>(event: K, opts: T[K]): Promise<void>;
}
export declare class Plugin implements IPlugin {
static loadedPlugins: {
[name: string]: Plugin;
};
_base: string;
name: string;
version: string;
pjson: PJSON.Plugin;
type: string;
root: string;
tag?: string;
manifest: Manifest;
_topics: Topic[];
plugins: IPlugin[];
hooks: {
[k: string]: string[];
};
valid: boolean;
ignoreManifest: boolean;
alreadyLoaded: boolean;
constructor(opts: Options);
readonly commandsDir: string | undefined;
readonly topics: Topic[];
readonly commands: {
load: () => Command.Class;
id: string;
hidden: boolean;
aliases: string[];
description?: string | undefined;
title?: string | undefined;
usage?: string | string[] | undefined;
examples?: string[] | undefined;
type?: string | undefined;
flags: {
[name: string]: Command.Flag;
};
args: {
name: string;
description?: string | undefined;
required?: boolean | undefined;
hidden?: boolean | undefined;
default?: string | undefined;
options?: string[] | undefined;
}[];
}[];
readonly commandIDs: string[];
findCommand(id: string, opts: {
must: true;
}): Command.Plugin;
findCommand(id: string, opts?: {
must: boolean;
}): Command.Plugin | undefined;
_findCommand(id: string): Command.Class;
findTopic(id: string, opts: {
must: true;
}): Topic;
findTopic(id: string, opts?: {
must: boolean;
}): Topic | undefined;
runHook<T extends Hooks, K extends keyof T>(event: K, opts: T[K]): Promise<void>;
protected _manifest(): Manifest;
protected loadPlugins(root: string, plugins: (string | PJSON.Plugin)[]): (string | PJSON.Plugin)[] | undefined;
}