/** * A flexible object for the many "options" objects we throw around in gluegun. */ export interface Options { [key: string]: any; } /** * More specific options for loading plugins. */ export interface GluegunLoadOptions { /** * Should we hide this plugin from showing up in the CLI? These types * of plugins will still be available to be called directly. */ hidden?: boolean; /** * The file pattern to use when auto-detecting commands. The default is [`*.{js,ts}`, `!*.test.{js,ts}`]. * The second matcher excludes test files with that pattern. The `ts` extension is only needed for loading * in a TypeScript environment such as `ts-node`. */ commandFilePattern?: string[]; /** * The file pattern is used when auto-detecting gluegun extensions. The default * is [`*.{js,ts}`, `!*.test.{js,ts}`]. The `ts` extension is only needed for loading * in a TypeScript environment such as `ts-node`. */ extensionFilePattern?: string[]; /** * Specifies if the plugin is required to exist or not. If this is `true` and the plugin * doesn't exist, an Error will be thrown. */ required?: boolean; /** * Overrides the name of the plugin. */ name?: string; /** * Provides commands that are provided by the calling CLI rather than loaded from a file. */ preloadedCommands?: object[]; } export interface GluegunMultiLoadOptions { /** * Filters the directories to those matching this glob-based pattern. The default * is `*` which is all the immediate sub-directories. Setting this to something * like `ignite-*` will only attempt to load plugins from directories that start * with `ignite-`. */ matching?: string; }