# Contributing

# Getting Started

This CLI is a monorepo managed with Lerna (opens new window). Check out the main repo and bootstrap it to get started with local development:

cd voxable-cli
yarn
lerna bootstrap --scope @voxable/cli
lerna bootstrap --scope @voxable/client
lerna bootstrap --scope @voxable/command
lerna bootstrap

At this point, you can run the CLI from the root directory of the project with: yarn run cli

In order to simplify local development (opens new window), project files are compiled into JavaScript in lib alongside their TypeScript sources.

# Documentation

This documentation site is built with Vuepress (opens new window). It is housed within the docs directory of the open source Voxable CLI (opens new window).

To run the docs locally, run the following from the root directory of that project:

yarn run docs:dev

# Developing plugins

To use a plugin with your local checkout of the CLI, link the plugin to your project, then install it:

$ yarn run cli plugins:link packages/plugin-bespoken

This will create a file ~/.local/share/@voxable/cli/package.json with the following content:

{
  "private": true,
  "oclif": {
    "schema": 1,
    "plugins": [
      {
        "type": "link",
        "name": "@voxable/cli",
        "root": "/Users/someuser/git/voxable-cli/packages/cli"
      }
    ]
  },
  "dependencies": {}
}

Edit the name and root of the member of the plugins array with a name of @voxable/cli to instead point at your plugin:

{
  "private": true,
  "oclif": {
    "schema": 1,
    "plugins": [
      {
        "type": "link",
        "name": "@voxable/plugin-bespoken",
        "root": "/Users/someuser/git/voxable-cli/packages/plugin-bespoken"
      }
    ]
  },
  "dependencies": {}
}

# Creating a new plugin

  1. npx oclif plugin newplugin
  2. cd mynewplugin
  3. yarn add @oclif/plugin-plugins @oclif/plugin-help
  4. Copy an existing plugin's package.json and edit appropriately.
  5. From the root directory, run lerna bootstrap --scope @voxable/plugin-newplugin
  6. Follow the plugin:link steps in the section above for your new plugin.
  7. Run yarn run cli plugins to ensure you see your new plugin listed.