Files
directus/packages/cli/src/core/extensions/instances.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

41 lines
1.3 KiB
TypeScript

import { Directus } from '@directus/sdk';
import { Toolbox } from '../../toolbox';
import { CLIRuntimeError } from '../exceptions';
import { InstanceStorage } from '../sdk/storage';
export default (toolbox: Toolbox): void => {
toolbox.sdk = new Directus('http://localhost:8055');
toolbox.options.feature('sdk', (builder) => {
return builder.option('instance', {
default: toolbox.config.project.data.instance || 'default',
description: 'The instance name the command should use to talk to Directus api.',
});
});
toolbox.events.on('command.execute.before', async (command, options) => {
if (!command.settings?.features?.sdk) {
return;
}
const instances = toolbox.config.system.data.instances;
if (!(options.instance in instances)) {
throw new CLIRuntimeError(`Unknown instance: ${options.instance}`);
}
const instance = toolbox.config.system.data.instances[options.instance]!;
const sdk = new Directus(instance.endpoint, {
storage: new InstanceStorage(options.instance, toolbox.config.system),
});
if (instance?.auth === 'token') {
await sdk.auth.static(instance.data?.auth_token);
} else if (instance?.auth === 'credentials') {
await sdk.auth.refresh(true);
toolbox.config.system.save();
}
toolbox.sdk = sdk;
});
};