@cerner/terra-toolkit-docs
Version:
Contains documentation for packages in the terra-toolkit monorepo
44 lines (28 loc) • 1.89 kB
text/mdx
# Terra CLI
Terra CLI is a command line builder that supports creating [yargs commands](https://github.com/yargs/yargs/blob/master/docs/advanced.md#commands) via defining [command modules](https://github.com/yargs/yargs/blob/master/docs/advanced.md#providing-a-command-module). Currently, terra-cli searches for a `terra-cli` directory in a given dependency and assumes that all subdirectories are separate command modules defined via `index.js` files in those subdirectories.
## Allow List
To limit who can create these commands, terra-cli currently uses an allow list to only search for the following dependencies:
* @cerner/terra-functional-testing
* @cerner/terra-open-source-scripts
## Dependency Searching
The search paths that terra-cli uses to search for terra-cli commands includes (constrained by the [allow list](#allow-list) mentioned above):
* The current project's src directory
* The src directory within subdirectories of the packages directory if the current project is `terra-toolkit`
* The lib directory within subdirectories of the node_modules directory
We use the src directory in the first two cases to allow for easier local development.
## Example command
If you want to create a command `test`, you should add a file at `src/terra-cli/test/index.js` within a dependency in the allowlist. This file should be set up to be copied but not transpiled over to the `lib` directory. The file should contain something similar to:
```javascript
const test = {
command: 'test',
describe: 'Test command description',
builder: (yargs) => testOptionsBuilder,
handler: testHandler,
};
module.exports = test;
```
For more information on how to create these modules see the [yargs documentation](https://github.com/yargs/yargs/blob/master/docs/advanced.md#providing-a-command-module).
To run this command, you would execute:
```sh
terra test <options>
```