From 210c40dc3902d341c97ce0d18a60eb61bd0f906f Mon Sep 17 00:00:00 2001 From: Pedro Ramos Date: Mon, 22 Apr 2024 13:26:37 +0200 Subject: [PATCH 1/2] fix: change `.asyncapi-analytics` file's directory (#1370) Co-authored-by: souvik --- src/base.ts | 5 +++-- src/commands/config/analytics.ts | 5 +++-- test/integration/config/analytics.test.ts | 5 ----- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/base.ts b/src/base.ts index 94aee8ffe15..ccca24b00a1 100644 --- a/src/base.ts +++ b/src/base.ts @@ -6,6 +6,7 @@ import { join, resolve } from 'path'; import { existsSync } from 'fs-extra'; import { promises as fPromises } from 'fs'; import { v4 as uuidv4 } from 'uuid'; +import { homedir } from 'os'; const { readFile, writeFile } = fPromises; @@ -86,7 +87,7 @@ export default abstract class extends Command { async recorderFromEnv(prefix: string): Promise { let sink: Sink = new DiscardSink(); - const analyticsConfigFile = join(process.cwd(), '.asyncapi-analytics'); + const analyticsConfigFile = join(homedir(), '.asyncapi-analytics'); if (!existsSync(analyticsConfigFile)) { await writeFile(analyticsConfigFile, JSON.stringify({ analyticsEnabled: 'true', infoMessageShown: 'false', userID: uuidv4()}), { encoding: 'utf8' }); @@ -109,7 +110,7 @@ export default abstract class extends Command { sink = new NewRelicSink(process.env.ASYNCAPI_METRICS_NEWRELIC_KEY || 'eu01xx73a8521047150dd9414f6aedd2FFFFNRAL'); if (analyticsConfigFileContent.infoMessageShown === 'false') { - this.log('\nAsyncAPI anonymously tracks command executions to improve the specification and tools, ensuring no sensitive data reaches our servers. It aids in comprehending how AsyncAPI tools are used and adopted, facilitating ongoing improvements to our specifications and tools.\n\nTo disable tracking, please run the following command:\n asyncapi config analytics --disable\n\nOnce disabled, if you want to enable tracking back again then run:\n asyncapi config analytics --enable'); + this.log('\nAsyncAPI anonymously tracks command executions to improve the specification and tools, ensuring no sensitive data reaches our servers. It aids in comprehending how AsyncAPI tools are used and adopted, facilitating ongoing improvements to our specifications and tools.\n\nTo disable tracking, please run the following command:\n asyncapi config analytics --disable\n\nOnce disabled, if you want to enable tracking back again then run:\n asyncapi config analytics --enable\n'); analyticsConfigFileContent.infoMessageShown = 'true'; await writeFile(analyticsConfigFile, JSON.stringify(analyticsConfigFileContent), { encoding: 'utf8' }); } diff --git a/src/commands/config/analytics.ts b/src/commands/config/analytics.ts index 0e1970406c3..e9c1fdaf224 100644 --- a/src/commands/config/analytics.ts +++ b/src/commands/config/analytics.ts @@ -2,6 +2,7 @@ import { Flags } from '@oclif/core'; import { join, resolve } from 'path'; import Command from '../../base'; import { promises as fPromises } from 'fs'; +import { homedir } from 'os'; const { readFile, writeFile } = fPromises; @@ -15,7 +16,7 @@ export default class Analytics extends Command { async run() { const { flags } = await this.parse(Analytics); - const analyticsConfigFile = join(process.cwd(), '.asyncapi-analytics'); + const analyticsConfigFile = join(homedir(), '.asyncapi-analytics'); try { const analyticsConfigFileContent = JSON.parse(await readFile(resolve(analyticsConfigFile), { encoding: 'utf8' })); @@ -34,7 +35,7 @@ export default class Analytics extends Command { } catch (e: any) { switch (e.code) { case 'ENOENT': - this.error(`Unable to access the analytics configuration file. We tried to access the ".asyncapi-analytics" file in your current working directory ("${process.cwd()}") but the file could not be found.`); + this.error(`Unable to access the analytics configuration file. We tried to access the ".asyncapi-analytics" file in your user's home directory ("${homedir()}") but the file could not be found.`); break; case 'EEXIST': this.error(`Unable to update the analytics configuration file. We tried to update your ".asyncapi-analytics" file in the path "${analyticsConfigFile}" but the file does not exist.`); diff --git a/test/integration/config/analytics.test.ts b/test/integration/config/analytics.test.ts index 8f5ae75183d..80471fbb78b 100644 --- a/test/integration/config/analytics.test.ts +++ b/test/integration/config/analytics.test.ts @@ -1,11 +1,6 @@ import { expect, test } from '@oclif/test'; -import { fileCleanup } from '../../helpers'; describe('config:analytics', () => { - afterEach(() => { - fileCleanup('.asyncapi-analytics'); - }); - describe('with disable flag', () => { test .stderr() From 7108478441b2afef0422576a08ee7ce20ccc7c0c Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Mon, 22 Apr 2024 13:36:50 +0200 Subject: [PATCH 2/2] chore(release): v1.9.0 (#1378) --- docs/usage.md | 100 +++++++++++++++++++--------------------------- package-lock.json | 4 +- package.json | 2 +- 3 files changed, 43 insertions(+), 63 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 93015426e78..fd10ebc5002 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -27,7 +27,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/1.8.3 linux-x64 node-v18.20.2 +@asyncapi/cli/1.8.4 linux-x64 node-v18.20.2 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -53,12 +53,11 @@ USAGE * [`asyncapi convert [SPEC-FILE]`](#asyncapi-convert-spec-file) * [`asyncapi diff OLD NEW`](#asyncapi-diff-old-new) * [`asyncapi generate`](#asyncapi-generate) -* [`asyncapi generate fromTemplate ASYNCAPI TEMPLATE`](#asyncapi-generate-fromtemplate-asyncapi-template) -* [`asyncapi generate models LANGUAGE FILE`](#asyncapi-generate-models-language-file) +* [`asyncapi generate fromTemplate [ASYNCAPI] [TEMPLATE]`](#asyncapi-generate-fromtemplate-asyncapi-template) +* [`asyncapi generate models [LANGUAGE] [FILE]`](#asyncapi-generate-models-language-file) * [`asyncapi new`](#asyncapi-new) * [`asyncapi new file`](#asyncapi-new-file) * [`asyncapi new glee`](#asyncapi-new-glee) -* [`asyncapi new project`](#asyncapi-new-project) * [`asyncapi optimize [SPEC-FILE]`](#asyncapi-optimize-spec-file) * [`asyncapi start`](#asyncapi-start) * [`asyncapi start studio`](#asyncapi-start-studio) @@ -92,7 +91,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.8.3/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/bundle.ts)_ ## `asyncapi config` @@ -106,7 +105,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/index.ts)_ ## `asyncapi config analytics` @@ -125,7 +124,7 @@ DESCRIPTION Enable or disable analytics for metrics collection ``` -_See code: [src/commands/config/analytics.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/analytics.ts)_ +_See code: [src/commands/config/analytics.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/analytics.ts)_ ## `asyncapi config context` @@ -139,7 +138,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.8.3/src/commands/config/context/index.ts)_ +_See code: [src/commands/config/context/index.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/index.ts)_ ## `asyncapi config context add CONTEXT-NAME SPEC-FILE-PATH` @@ -161,7 +160,7 @@ DESCRIPTION Add a context to the store ``` -_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/context/add.ts)_ +_See code: [src/commands/config/context/add.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/add.ts)_ ## `asyncapi config context current` @@ -178,7 +177,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.8.3/src/commands/config/context/current.ts)_ +_See code: [src/commands/config/context/current.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/current.ts)_ ## `asyncapi config context edit CONTEXT-NAME NEW-SPEC-FILE-PATH` @@ -199,7 +198,7 @@ DESCRIPTION Edit a context in the store ``` -_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/context/edit.ts)_ +_See code: [src/commands/config/context/edit.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/edit.ts)_ ## `asyncapi config context init [CONTEXT-FILE-PATH]` @@ -222,7 +221,7 @@ DESCRIPTION Initialize context ``` -_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/context/init.ts)_ +_See code: [src/commands/config/context/init.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/init.ts)_ ## `asyncapi config context list` @@ -239,7 +238,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.8.3/src/commands/config/context/list.ts)_ +_See code: [src/commands/config/context/list.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/list.ts)_ ## `asyncapi config context remove CONTEXT-NAME` @@ -259,7 +258,7 @@ DESCRIPTION Delete a context from the store ``` -_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/context/remove.ts)_ +_See code: [src/commands/config/context/remove.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/remove.ts)_ ## `asyncapi config context use CONTEXT-NAME` @@ -279,7 +278,7 @@ DESCRIPTION Set a context as current ``` -_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/context/use.ts)_ +_See code: [src/commands/config/context/use.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/context/use.ts)_ ## `asyncapi config versions` @@ -296,7 +295,7 @@ DESCRIPTION Show versions of AsyncAPI tools used ``` -_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/config/versions.ts)_ +_See code: [src/commands/config/versions.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/config/versions.ts)_ ## `asyncapi convert [SPEC-FILE]` @@ -318,7 +317,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -373,7 +372,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/diff.ts)_ ## `asyncapi generate` @@ -387,16 +386,16 @@ 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.8.3/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/generate/index.ts)_ -## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` +## `asyncapi generate fromTemplate [ASYNCAPI] [TEMPLATE]` Generates whatever you want using templates compatible with AsyncAPI Generator. ``` USAGE - $ asyncapi generate fromTemplate ASYNCAPI TEMPLATE [-h] [-d ] [-i] [--debug] [-n ] [-o ] - [--force-write] [-w] [-p ] [--map-base-url ] + $ asyncapi generate fromTemplate [ASYNCAPI] [TEMPLATE] [-h] [-d ] [--no-interactive] [-i] [--debug] [-n ] + [-o ] [--force-write] [-w] [-p ] [--map-base-url ] ARGUMENTS ASYNCAPI - Local path, url or context-name pointing to AsyncAPI file @@ -416,6 +415,7 @@ FLAGS --force-write Force writing of the generated files to given directory even if it is a git repo with unstaged files or not empty dir (defaults to false) --map-base-url= Maps all schema references from base url to local folder + --no-interactive Disable interactive mode and run with the provided flags. DESCRIPTION Generates whatever you want using templates compatible with AsyncAPI Generator. @@ -424,20 +424,20 @@ 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.8.3/src/commands/generate/fromTemplate.ts)_ +_See code: [src/commands/generate/fromTemplate.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/generate/fromTemplate.ts)_ -## `asyncapi generate models LANGUAGE FILE` +## `asyncapi generate models [LANGUAGE] [FILE]` Generates typed models ``` USAGE - $ asyncapi generate models LANGUAGE FILE [-h] [-o ] [--tsModelType class|interface] [--tsEnumType - enum|union] [--tsModuleSystem ESM|CJS] [--tsIncludeComments] [--tsExportType default|named] [--tsJsonBinPack] - [--tsMarshalling] [--tsExampleInstance] [--packageName ] [--javaIncludeComments] [--javaJackson] - [--javaConstraints] [--namespace ] [--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] + $ asyncapi generate models [LANGUAGE] [FILE] [-h] [--no-interactive] [-o ] [--tsModelType class|interface] + [--tsEnumType enum|union] [--tsModuleSystem ESM|CJS] [--tsIncludeComments] [--tsExportType default|named] + [--tsJsonBinPack] [--tsMarshalling] [--tsExampleInstance] [--packageName ] [--javaIncludeComments] + [--javaJackson] [--javaConstraints] [--namespace ] [--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 @@ -477,6 +477,8 @@ FLAGS namespace to use for the generated models. This is required when language is `csharp`,`c++` or `php`. + --no-interactive Disable interactive mode and run with the + provided flags. --packageName= Go, Java and Kotlin specific, define the package to use for the generated models. This is required when language is `go`, `java` or @@ -508,7 +510,7 @@ DESCRIPTION Generates typed models ``` -_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/generate/models.ts)_ +_See code: [src/commands/generate/models.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/generate/models.ts)_ ## `asyncapi new` @@ -565,7 +567,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.8.3/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -622,7 +624,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.8.3/src/commands/new/file.ts)_ +_See code: [src/commands/new/file.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/new/file.ts)_ ## `asyncapi new glee` @@ -644,29 +646,7 @@ DESCRIPTION Creates a new Glee project ``` -_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/new/glee.ts)_ - -## `asyncapi new project` - -Creates a new Glee project - -``` -USAGE - $ asyncapi new project [-h] [-n ] [-t ] [-f ] [--force-write] - -FLAGS - -f, --file= The path to the AsyncAPI file for generating a Glee project. - -h, --help Show CLI help. - -n, --name= [default: project] Name of the Project - -t, --template= [default: default] Name of the Template - --force-write Force writing of the generated files to given directory even if it is a git repo with unstaged - files or not empty dir (defaults to false) - -DESCRIPTION - Creates a new Glee project -``` - -_See code: [src/commands/new/project.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/new/project.ts)_ +_See code: [src/commands/new/glee.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/new/glee.ts)_ ## `asyncapi optimize [SPEC-FILE]` @@ -702,7 +682,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/optimize.ts)_ ## `asyncapi start` @@ -716,7 +696,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -735,7 +715,7 @@ DESCRIPTION starts a new local instance of Studio ``` -_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/start/studio.ts)_ +_See code: [src/commands/start/studio.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/start/studio.ts)_ ## `asyncapi validate [SPEC-FILE]` @@ -762,5 +742,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.8.3/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v1.8.4/src/commands/validate.ts)_ diff --git a/package-lock.json b/package-lock.json index 0bf436f42cd..689ac0304c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@asyncapi/cli", - "version": "1.8.4", + "version": "1.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@asyncapi/cli", - "version": "1.8.4", + "version": "1.9.0", "license": "Apache-2.0", "dependencies": { "@asyncapi/avro-schema-parser": "^3.0.21", diff --git a/package.json b/package.json index b0488acc73f..4affe8ceb8f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@asyncapi/cli", "description": "All in one CLI for all AsyncAPI tools", - "version": "1.8.4", + "version": "1.9.0", "author": "@asyncapi", "bin": { "asyncapi": "./bin/run_bin"