# @mochabug/adaptkit : The Magical CLI for Mochabug Adapt Plugin Development!

Welcome to **@mochabug/adaptkit**! Prepare to embark on a whimsical adventure filled with creativity and efficiency! @mochabug/adaptkit is a powerful CLI tool designed to help you *effortlessly* develop and manage plugins for the Mochabug Adapt platform. With @mochabug/adaptkit, you can:

- 🌈 Create enchanting template projects for plugin development
- 🧙‍♂️ Emulate your plugins in a cloud environment with just a flick of your wand
- 🧚 Add and modify vertices to your plugin project with ease
- 🌟 Automagically handle tedious tasks that often bog down software development

## Magical Vertices: Your Plugin Building Blocks 🔮

Vertices, also known as tasks, are the building blocks of your plugins. Each plugin consists of one or more vertices. A vertex in @mochabug/adaptkit consists of two parts: an Executor and an optional Configurator. 

- **Executor**: A mandatory part that performs tasks. It can have different types:
  - **Action**: Performs tasks without interacting with external systems
  - **Cron Trigger**: Triggers actions at specified intervals, like clockwork
  - **External Trigger**: Activates tasks from an external endpoint, bringing the magic to the outside world
  - **Browser**: Runs tasks within a browser, where requests end up on the external endpoint

- **Configurator**: An optional part that customizes the behavior of the executor. Configurators interact with users on the Mochabug Adapt platform, making them "external" by nature.

## Getting Started 🚀

To start your magical journey with @mochabug/adaptkit, install the package using the following incantation:

```bash
npm install -g @mochabug/adaptkit
```

## Usage 🪄

With @mochabug/adaptkit installed, you can now wield your newfound powers to develop and manage your plugin projects! Here's a guide to help you harness the magic:

1. **Create a template project for plugin development**

```bash
adaptkit --init
```

This command generates a `manifest.json` file, Executor and Configurator templates, and .cue schema files with information about your plugin.

2. **Emulate your plugins in the cloud environment**

```bash
adaptkit --emulate
```

Test your plugin's sorcery in a controlled environment by emulating its behavior in the cloud.

In order to do this you need to have docker installed and run the emulator locally using the following command:

```bash
docker run --rm -it -p 51001:51001 -p 51002:51002 -p 51003:51003 -p 51004:51004 -p 51005:51005 mochabug/adaptsandbox:latest
```

Note: The 5 ports is required to simulate the different vertex types as well as the graphical interface together with the publish endpoint of adaptkit.

1. **Add and modify vertices**

```bash
adaptkit --add-vertex [vertexType] [vertexName]
```

Easily add or modify vertices to your plugin project by specifying the vertex type and name.

4. **Publish your plugin to the Mochabug Adapt platform**

```bash
adaptkit --publish
```

Share your magical creation with the world by publishing your plugin to the Mochabug Adapt platform.

## Documentation 📚

For a more comprehensive spellbook on how to use @mochabug/adaptkit and unlock the full potential of our captivating plugin system for Mochabug Adapt, visit our [documentation](https://developers.mochabug.com).

## Contribute 🤝

@mochabug/adaptkit s is a community-driven, open-source project, and we warmly welcome your contributions! If you have an idea for a new type, a bug report, or would like to help with documentation, please [open an issue](https://github.com/mochabug/mochabug/issues) or [submit a pull request](https://github.com/mochabug/mochabug/pulls).

## A Magical Journey Awaits! 🍄
