Skip to content

Commit

Permalink
Merge pull request #7 from asyncapi/master
Browse files Browse the repository at this point in the history
asyncapi/cli to ayushnau/cli
  • Loading branch information
ayushnau authored Jan 18, 2024
2 parents 2cc23ec + c873ab7 commit 093cac3
Show file tree
Hide file tree
Showing 7 changed files with 151 additions and 658 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/release-chocolatey.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ jobs:
else {
$version = $(npm pkg get version)
}
$version = $version.Replace("`"", "")
echo "Setting version to $version"
echo "version=$version" >> $env:GITHUB_OUTPUT
Expand Down
692 changes: 70 additions & 622 deletions assets/create-glee-app/templates/default/package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion assets/create-glee-app/templates/default/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
},
"homepage": "https://github.com/asyncapi/glee-hello-world#readme",
"dependencies": {
"@asyncapi/glee": "^0.33.5"
"@asyncapi/glee": "^0.35.0"
},
"devDependencies": {
"@types/node": "^20.5.9"
Expand Down
64 changes: 35 additions & 29 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli
$ asyncapi COMMAND
running command...
$ asyncapi (--version)
@asyncapi/cli/1.2.33 linux-x64 node-v18.19.0
@asyncapi/cli/1.3.0 linux-x64 node-v18.19.0
$ asyncapi --help [COMMAND]
USAGE
$ asyncapi COMMAND
Expand Down Expand Up @@ -93,7 +93,7 @@ EXAMPLES
$ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components
```

_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/bundle.ts)_
_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/bundle.ts)_

## `asyncapi config`

Expand All @@ -107,7 +107,7 @@ DESCRIPTION
CLI config settings
```

_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/index.ts)_
_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/index.ts)_

## `asyncapi config context`

Expand All @@ -121,7 +121,7 @@ DESCRIPTION
Manage short aliases for full paths to AsyncAPI documents
```

_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/index.ts)_
_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/index.ts)_

## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH`

Expand All @@ -143,7 +143,7 @@ DESCRIPTION
Add a context to the store
```

_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/add.ts)_
_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/add.ts)_

## `asyncapi config context current`

Expand All @@ -160,7 +160,7 @@ DESCRIPTION
Shows the current context that is being used
```

_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/current.ts)_
_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/current.ts)_

## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH`

Expand All @@ -181,7 +181,7 @@ DESCRIPTION
Edit a context in the store
```

_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/edit.ts)_
_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/edit.ts)_

## `asyncapi config context init [CONTEXT-FILE-PATH]`

Expand All @@ -204,7 +204,7 @@ DESCRIPTION
Initialize context
```

_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/init.ts)_
_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/init.ts)_

## `asyncapi config context list`

Expand All @@ -221,7 +221,7 @@ DESCRIPTION
List all the stored contexts in the store
```

_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/list.ts)_
_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/list.ts)_

## `asyncapi config context remove CONTEXT-NAME`

Expand All @@ -241,7 +241,7 @@ DESCRIPTION
Delete a context from the store
```

_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/remove.ts)_
_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/remove.ts)_

## `asyncapi config context use CONTEXT-NAME`

Expand All @@ -261,7 +261,7 @@ DESCRIPTION
Set a context as current
```

_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/context/use.ts)_
_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/context/use.ts)_

## `asyncapi config versions`

Expand All @@ -278,7 +278,7 @@ DESCRIPTION
Show versions of AsyncAPI tools used
```

_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/config/versions.ts)_
_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/config/versions.ts)_

## `asyncapi convert [SPEC-FILE]`

Expand All @@ -300,7 +300,7 @@ DESCRIPTION
Convert asyncapi documents older to newer versions
```

_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/convert.ts)_
_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/convert.ts)_

## `asyncapi diff OLD NEW`

Expand Down Expand Up @@ -355,7 +355,7 @@ DESCRIPTION
Find diff between two asyncapi files
```

_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/diff.ts)_
_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/diff.ts)_

## `asyncapi generate`

Expand All @@ -369,7 +369,7 @@ DESCRIPTION
Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates.
```

_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/generate/index.ts)_
_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/generate/index.ts)_

## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE`

Expand Down Expand Up @@ -406,7 +406,7 @@ EXAMPLES
$ asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template --param version=1.0.0 singleFile=true --output ./docs --force-write
```

_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/generate/fromTemplate.ts)_
_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/generate/fromTemplate.ts)_

## `asyncapi generate models LANGUAGE FILE`

Expand All @@ -416,10 +416,10 @@ Generates typed models
USAGE
$ asyncapi generate models LANGUAGE FILE [-h] [-o <value>] [--tsModelType class|interface] [--tsEnumType
enum|union] [--tsModuleSystem ESM|CJS] [--tsIncludeComments] [--tsExportType default|named] [--tsJsonBinPack]
[--tsMarshalling] [--tsExampleInstance] [--packageName <value>] [--namespace <value>] [--csharpAutoImplement]
[--csharpNewtonsoft] [--csharpArrayType Array|List] [--csharpHashcode] [--csharpEqual] [--csharpSystemJson]
[--log-diagnostics] [--diagnostics-format json|stylish|junit|html|text|teamcity|pretty] [--fail-severity
error|warn|info|hint]
[--tsMarshalling] [--tsExampleInstance] [--packageName <value>] [--javaIncludeComments] [--javaJackson]
[--javaConstraints] [--namespace <value>] [--csharpAutoImplement] [--csharpNewtonsoft] [--csharpArrayType
Array|List] [--csharpHashcode] [--csharpEqual] [--csharpSystemJson] [--log-diagnostics] [--diagnostics-format
json|stylish|junit|html|text|teamcity|pretty] [--fail-severity error|warn|info|hint]
ARGUMENTS
LANGUAGE (typescript|csharp|golang|java|javascript|dart|python|rust|kotlin|php|cplusplus) The language you want the
Expand Down Expand Up @@ -448,6 +448,12 @@ FLAGS
diagnostics
--fail-severity=(error|warn|info|hint) [default: error] diagnostics of this level or
above will trigger a failure exit code
--javaConstraints Java specific, generate the models with
constraints
--javaIncludeComments Java specific, if enabled add comments while
generating models.
--javaJackson Java specific, generate the models with Jackson
serialization support
--[no-]log-diagnostics log validation diagnostics or not
--namespace=<value> C#, C++ and PHP specific, define the namespace to
use for the generated models. This is required
Expand Down Expand Up @@ -480,7 +486,7 @@ DESCRIPTION
Generates typed models
```

_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/generate/models.ts)_
_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/generate/models.ts)_

## `asyncapi new`

Expand Down Expand Up @@ -538,7 +544,7 @@ EXAMPLES
$ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode
```

_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/new/index.ts)_
_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/new/index.ts)_

## `asyncapi new file`

Expand Down Expand Up @@ -596,7 +602,7 @@ EXAMPLES
$ asyncapi new --file-name=my-asyncapi.yml --example=default-example.yml --no-tty - create a new file with a specific name, using one of the examples and without interactive mode
```

_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/new/file.ts)_
_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/new/file.ts)_

## `asyncapi new glee`

Expand All @@ -615,7 +621,7 @@ DESCRIPTION
Creates a new Glee project
```

_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/new/glee.ts)_
_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/new/glee.ts)_

## `asyncapi new project`

Expand All @@ -634,7 +640,7 @@ DESCRIPTION
Creates a new Glee project
```

_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/new/project.ts)_
_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/new/project.ts)_

## `asyncapi optimize [SPEC-FILE]`

Expand Down Expand Up @@ -670,7 +676,7 @@ EXAMPLES
$ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty
```

_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/optimize.ts)_
_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/optimize.ts)_

## `asyncapi start`

Expand All @@ -684,7 +690,7 @@ DESCRIPTION
Start asyncapi studio
```

_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/start/index.ts)_
_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/start/index.ts)_

## `asyncapi start studio`

Expand All @@ -703,7 +709,7 @@ DESCRIPTION
starts a new local instance of Studio
```

_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/start/studio.ts)_
_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/start/studio.ts)_

## `asyncapi validate [SPEC-FILE]`

Expand All @@ -730,5 +736,5 @@ DESCRIPTION
validate asyncapi file
```

_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.2.33/src/commands/validate.ts)_
_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.3.0/src/commands/validate.ts)_
<!-- commandsstop -->
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@asyncapi/cli",
"description": "All in one CLI for all AsyncAPI tools",
"version": "1.2.34",
"version": "1.3.1",
"author": "@asyncapi",
"bin": {
"asyncapi": "./bin/run"
Expand Down
43 changes: 40 additions & 3 deletions src/commands/generate/models.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CSharpFileGenerator, JavaFileGenerator, JavaScriptFileGenerator, TypeScriptFileGenerator, GoFileGenerator, Logger, DartFileGenerator, PythonFileGenerator, RustFileGenerator, TS_COMMON_PRESET, TS_JSONBINPACK_PRESET, CSHARP_DEFAULT_PRESET, CSHARP_NEWTONSOFT_SERIALIZER_PRESET, CSHARP_COMMON_PRESET, CSHARP_JSON_SERIALIZER_PRESET, KotlinFileGenerator, TS_DESCRIPTION_PRESET, PhpFileGenerator, CplusplusFileGenerator } from '@asyncapi/modelina';
import { CSharpFileGenerator, JavaFileGenerator, JavaScriptFileGenerator, TypeScriptFileGenerator, GoFileGenerator, Logger, DartFileGenerator, PythonFileGenerator, RustFileGenerator, TS_COMMON_PRESET, TS_JSONBINPACK_PRESET, CSHARP_DEFAULT_PRESET, CSHARP_NEWTONSOFT_SERIALIZER_PRESET, CSHARP_COMMON_PRESET, CSHARP_JSON_SERIALIZER_PRESET, KotlinFileGenerator, TS_DESCRIPTION_PRESET, PhpFileGenerator, CplusplusFileGenerator, JAVA_CONSTRAINTS_PRESET, JAVA_JACKSON_PRESET, JAVA_COMMON_PRESET, JAVA_DESCRIPTION_PRESET } from '@asyncapi/modelina';
import { Flags } from '@oclif/core';
import { ConvertDocumentParserAPIVersion } from '@smoya/multi-parser';
import Command from '../../base';
Expand Down Expand Up @@ -100,6 +100,24 @@ export default class Models extends Command {
description: 'Go, Java and Kotlin specific, define the package to use for the generated models. This is required when language is `go`, `java` or `kotlin`.',
required: false
}),
/**
* Java specific options
*/
javaIncludeComments: Flags.boolean({
description: 'Java specific, if enabled add comments while generating models.',
required: false,
default: false
}),
javaJackson: Flags.boolean({
description: 'Java specific, generate the models with Jackson serialization support',
required: false,
default: false
}),
javaConstraints: Flags.boolean({
description: 'Java specific, generate the models with constraints',
required: false,
default: false
}),

/**
* C++ and C# and PHP specific namespace to use for the generated models
Expand Down Expand Up @@ -150,7 +168,7 @@ export default class Models extends Command {
/* eslint-disable sonarjs/cognitive-complexity */
async run() {
const { args, flags } = await this.parse(Models);
const { tsModelType, tsEnumType, tsIncludeComments, tsModuleSystem, tsExportType, tsJsonBinPack, tsMarshalling, tsExampleInstance, namespace, csharpAutoImplement, csharpArrayType, csharpNewtonsoft, csharpHashcode, csharpEqual, csharpSystemJson, packageName, output } = flags;
const { tsModelType, tsEnumType, tsIncludeComments, tsModuleSystem, tsExportType, tsJsonBinPack, tsMarshalling, tsExampleInstance, namespace, csharpAutoImplement, csharpArrayType, csharpNewtonsoft, csharpHashcode, csharpEqual, csharpSystemJson, packageName, javaIncludeComments, javaJackson, javaConstraints, output } = flags;
const { language, file } = args;
const inputFile = (await load(file)) || (await load());
if (inputFile.isAsyncAPI3()) {
Expand Down Expand Up @@ -279,7 +297,26 @@ export default class Models extends Command {
if (packageName === undefined) {
throw new Error('In order to generate models to Java, we need to know which package they are under. Add `--packageName=PACKAGENAME` to set the desired package name.');
}
fileGenerator = new JavaFileGenerator();
presets.push({
preset: JAVA_COMMON_PRESET,
options
});
if (javaIncludeComments) {presets.push(JAVA_DESCRIPTION_PRESET);}
if (javaJackson) {
presets.push({
preset: JAVA_COMMON_PRESET,
options
},
JAVA_JACKSON_PRESET);
}
if (javaConstraints) {
presets.push({
preset: JAVA_COMMON_PRESET,
options
},
JAVA_CONSTRAINTS_PRESET);
}
fileGenerator = new JavaFileGenerator({ presets });
fileOptions = {
packageName
};
Expand Down

0 comments on commit 093cac3

Please sign in to comment.