Files
directus/packages/cli/src/command.ts
WoLfulus d8caf221ed CLI 2.0 (#5376)
* merge components

merge args, parser, docs, formatter, help and handlers

* change directus command and add auto debug

* output format fixes

* adds back some reformatted and documented commands

* better help output format

* refactor all output flow

* export cli types

* more formatting fixes and param rework

* fix table spacing

* add yaml formatting and fix string colors

* finished formatting docs

* remove log

* remove package-lock

* update dependency versions

* fix command description

* workaround typescript loading

* module loading fixes
added command error
rename human to table
fix disconnect usage

* add typescript loader

redirect execution to local package if installed locally
added command alias `directus-ctl`

* fix module load directories

* reimplement stdin pipe to work on linux

* fix sdk server info type

* info command

* Fix stdin bug
Disable community extensions to discourage use for now
Added template to config files
Added password stdin to connect to instances
Fixed typescript command load

* Added command suggestions and QOL features

* Linter fixes

* Add command hints

* Separate positional options

* Add back delete many, fix delete one location

* Change score logic

* Add whoami util command

* Add short online docs

* Fix typo

* Fix typo

* Update commands

* Param consistency fix and docs update

* Create commands

* Update package.json version

* Update package-lock

* Fixed several linting problems

* Update dependencies

* Update lock

* Remove locked dependencies

* Stop conflicts when in home directory

* Package lock update and npm audit fix

* Fix formatting errors

* Comment out extending cli section until we figure out cli ext

* Update readme

* Tweak dev/build/prebuild script naming

* Use up to date deps

* Fix dependency version in lock (fix build)

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-05-12 20:38:30 +00:00

55 lines
1.3 KiB
TypeScript

import { Argv } from 'yargs';
import { CLIError } from './core/exceptions';
import { StdinFeatures } from './core/extensions/stdin';
import { CommandHelp, GeneralHelp } from './help';
import { IOutput } from './output';
import { Toolbox } from './toolbox';
export type Features = {
sdk?: boolean;
query?: 'one' | 'many';
output?: boolean;
stdin?: StdinFeatures;
[feature: string]: unknown;
};
export type Settings<P = unknown> = {
description?: string;
parameters?: string;
group?: string;
synopsis?: string;
documentation?: string;
configuration?: string;
usage?: string;
features?: Features;
disableHelp?: boolean;
hidden?: boolean;
hints?: string[];
options?(builder: Argv): Argv<P>;
};
export type Handler<T extends Toolbox = Toolbox, P = unknown, R extends any = void> = (
toolbox: T,
params: P
) => Promise<R>;
export type CommandResult<T extends any> = {
result?: T;
help?: GeneralHelp | CommandHelp;
error?: CLIError;
output?: IOutput;
};
export type Command<T extends Toolbox = Toolbox, P = unknown, R extends any = void> = {
settings?: Settings<P>;
run: {
/**
* @deprecated Please don't access this field. It's for internal use only and a workaround for Gluegun.
*/
$directus: {
settings: Settings<P>;
};
(toolbox: T): R | Promise<CommandResult<R>>;
};
};