/cli

CLI to work with your AsyncAPI files. You can validate them and in the future use a generator and even bootstrap a new file. Contributions are welcomed!

Primary LanguageTypeScriptApache License 2.0Apache-2.0

AsyncAPI CLI

CLI to work with your AsyncAPI files. Currently under development, we are working to bring more features.

GitHub license PR testing - if Node project npm

Table of contents

Installation

Using NPM and Node

To run @asyncapi/cli, you'll need Node.js >=v10

Run this terminal command to check your Node.js version:

node -v

If you don't have Node.js installed or NPM, simply install both via package manager

Install the CLI globaly on your system run CLI it from anywhere:

npm install -g @asyncapi/cli

MacOS

Using brew

You can install this CLI using brew package manager.

# Install brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install AsyncAPI CLI
brew install asyncapi

Using pkg

Each release of CLI produces a MacOS dedicated pkg file that enables you to install this CLI as MacOS application.

# Download latest release. To download specific release, your link should look similar to https://github.com/asyncapi/cli/releases/download/v0.13.0/asyncapi.pkg. All releases are listed in https://github.com/asyncapi/cli/releases
curl -OL https://github.com/asyncapi/cli/releases/latest/download/asyncapi.pkg
# Install AsyncAPI CLI
sudo installer -pkg asyncapi.pkg -target /

Linux

For debian based distros

You can install this CLI using dpkg, a package manager for debian.

# Download latest release. To download specific release, your link should look similar to https://github.com/asyncapi/cli/releases/download/v0.13.0/asyncapi.deb. All releases are listed in https://github.com/asyncapi/cli/releases
curl -OL https://github.com/asyncapi/cli/releases/latest/download/asyncapi.deb
# Install AsyncAPI CLI
sudo dpkg -i asyncapi.deb

For other distros

You can install this CLI using the archive(tar.gz) file.

# Download latest release. To download specific release, your link should look similar to https://github.com/asyncapi/cli/releases/download/v0.13.0/asyncapi.tar.gz. All releases are listed in https://github.com/asyncapi/cli/releases
curl -OL https://github.com/asyncapi/cli/releases/latest/download/asyncapi.tar.gz
# Untar the archive file
tar -xzf asyncapi.tar.gz

The above step will create an asyncapi directory in the current path.

Create a symlink to run the CLI from anywhere. We will create the symlink in /usr/local/bin directory since this directory is already in the PATH.

# cd into the unarchived directory
cd asyncapi

# get the absolute path
pwd

# Create a symlink
ln -s <absolute-path>/bin/asyncapi /usr/local/bin/asyncapi

# The `asyncapi` command should be available to be used
asyncapi

Usage

@asyncapi/cli makes it easier to work with asyncpi files.

We have well-documented help commands so just run:

asyncapi --help

It should print something like:

All in one CLI for all AsyncAPI tools

USAGE
  $ asyncapi [COMMAND]

COMMANDS
  config    access configs
  diff      find diff between two AsyncAPI files
  new       creates a new AsyncAPI file
  start     starts a new local instance of Studio
  validate  validate an AsyncAPI file
  generate    generate all kinds of stuff
    models       generate all the typed models for the message payloads defined in the AsyncAPI file
      typescript    generate the models for TypeScript
      csharp        generate the models for C#
      golang        generate the models for Go
      java          generate the models for Java
      javascript    generate the models for JavaScript
      dart          generate the models for Dart
    fromTemplate    generate whatever you want using templates compatible with AsyncAPI Generator 

Contributing

Read CONTRIBUTING guide.

Set up development environment

Follow these steps:

  • Clone the repo.
  • Run npm install to install all the required dependencies
  • Run npm run test to make sure everything is properly set up
  • Run npm run build and then bin/run to try new CLI locally

UX developed for the CLI should be compliant with Command Line Interface Guideline

Command Structure and Patterns

We are following verb + noun and namespace + noun + [verb] pattern for making our commands and arguments. For example asyncapi validate <spec-file-path> and asyncapi config context add <context-name> <spec-file-path>.

Contributors

Thanks goes to these wonderful people (emoji key):


Jorge Aguiar MartΓ­n

πŸ’» πŸ€” ⚠️ πŸ“–

Lukasz Gornicki

πŸ€” πŸ’» πŸ‘€ 🚧

souvik

πŸ’» πŸ€” ⚠️ πŸ‘€ 🚧 πŸ“–

David Boyne

πŸ’» πŸ€” 🚧

Fran MΓ©ndez

πŸ’» πŸ€” πŸ‘€

Maciej UrbaΕ„czyk

πŸ‘€ 🚧 πŸ€”

Aayush Kumar Sahu

πŸ’» ⚠️

Mihir Kulkarni

πŸ’»

Abir

⚠️ πŸ’»

Peter Ramos

πŸ’»

Samriddhi

⚠️

Pranay Kharabe

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!