Skip to content

c0olix/asyncApiCodeGen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

asyncApiCodeGen

This project aims to generate usable code from an asyncApi-spec (see https://www.asyncapi.com/).

Features

  • Create Kafka Code to be used in:
    • Go
    • Java

Limits

  • General: only Kafka as messaging backend

Datatypes, Format, Validations

Currently, these datatypes and formats are supported

Datatype/Format Java Go Validate
integer ✔️ ✔️ ✔️
int32 (format) ✔️ ✔️ ✔️
int64 (format) ✔️ ✔️ ✔️
number ✔️ ✔️ ✔️
float (format) ✔️ ✔️ ✔️
double (format) ✔️ ✔️ ✔️
string ✔️ ✔️ ✔️
email (format) ✔️ ✔️ ✔️
binary (format) ✔️ ✔️ ✔️
date (format) ✔️ ✔️ ✔️
date-time (format) ✔️ ✔️ ✔️
password (format) ✔️

Further the generator support to add validation/featuress on the resulting types/classes for

Validation/Feature Java Go Validate
required ✔️ ✔️ ✔️
email ✔️ ✔️ ✔️
default ✔️ ✔️
minimum ✔️ ✔️ ✔️
maximum ✔️ ✔️ ✔️
exclusiveMinimum ✔️ ✔️
exclusiveMaximum ✔️ ✔️
minLength ✔️ ✔️ ✔️
maxLength ✔️ ✔️ ✔️
minItems ✔️ ✔️ ✔️
maxItems ✔️ ✔️ ✔️
uniqueItems ✔️ ✔️
anyOf ✔️
oneOf ✔️
allOf ✔️
not ✔️
pattern ✔️
enum ✔️
multipleOf ✔️
minProperties ✔️
maxProperties ✔️
externalDoc ✔️
nullable ✔️
readOnly ✔️
writeOnly ✔️

Usage

RootCmd

$ asyncApiCodeGen -h
This CLI-Tool is used to generate code for given async api spec

Usage:
  asyncApiCodeGen [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  generate    Used to generate code from async api spec
  help        Help about any command
  validate    Validate given asyncApiSpec

Flags:
  -h, --help           help for asyncApiCodeGen
  -i, --input string   Where is the source spec located?

Generate

$ asyncApiCodeGen generate -h
Used to generate code from async api spec. First argument is the spec and the second is the path to the output. 
        
        For example:
        asyncApiCodeGen generate -i in_spec.yaml -o out.go

Usage:
  asyncApiCodeGen generate [flags]

Flags:
  -c, --createDir            Should directory be created if not present (recursive)?
  -f, --flavor string        Which (if) flavor should be used?
  -h, --help                 help for generate
  -l, --lang string          What kind of code should be generated? (default "go")
  -o, --output string        Where should the generated code saved to? Attention: Go=File, Java=Dir!
  -p, --packageName string   Which package name should the generated code have?

Global Flags:
  -i, --input string   Where is the source spec located?

Possible options for flags

--createDir
  • true
  • false (default)
--flavor
  • "" (Blank) - Generates a default
  • "mosaic" - Generates code with the mosaic flavor, which includes a private repository
  • "mqtt" - Generates a mqtt compatible api (go only for now)
--lang
  • "java"
  • "go"
--output

A path or file, where the generated code should be created.

Attention: In case of go, a single file will be created, so output must be a file! In case of java multiple files will be created, so the output value must be a directory!

--packageName

The name of the package e.g. events or com.yourcompany.events

Validate

$ asyncApiCodeGen validate -h
Validate given asyncApiSpec.

Usage:
  asyncApiCodeGen validate [flags]

Flags:
  -h, --help   help for validate

Global Flags:
  -i, --input string   Where is the source spec located?