Skip to content

Commit

Permalink
docs(cli): update latest cli documentation (#3551)
Browse files Browse the repository at this point in the history
  • Loading branch information
asyncapi-bot authored Jan 6, 2025
1 parent fe09451 commit 81e101b
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 6 deletions.
98 changes: 98 additions & 0 deletions markdown/docs/tools/cli/architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
title: 'CLI Architecture'
weight: 40
---

The AsyncAPI CLI uses oclif (Open CLI Framework) as its core framework, which enables developers to build powerful and scalable command-line applications.

**Structure of the AsyncAPI CLI**: The CLI is primarily divided into two components: commands and the core part.

1. **Command Component**: The commands include all the necessary functionalities that help developers interact with features like creating new AsyncAPI projects, validating AsyncAPI files, formatting AsyncAPI files, and more.
2. **Core Component**: The core part of the CLI contains various utilities that facilitate the efficient creation of new commands.

---

### **Detailed Explanation of Key Directories in the CLI**

#### **`src/commands/`**
- **Purpose:** Implements the CLI commands available to the user.
- **Subdirectories:**
- `config/`: Stores configuration-related files for commands.
- `generate/`: Generates typed models or other artifacts like clients, applications, or documentation using AsyncAPI Generator templates.
- **Files:**
- `fromTemplate.ts`: Contains logic for generating files using templates.
- `models.ts`: Defines the models used during generation.
- `new/`: Creates a new AsyncAPI file.
- **Files:**
- `file.ts`: Handles file creation logic.
- `glee.ts`: Related to Glee, a tool for event-driven microservices.
- `template.ts`: Manages templates for new projects.
- `start/`: Implements starting functionalities like launching a local server or studio.
- **Files:**
- `studio.ts`: Integrates with the AsyncAPI Studio.

- **Standalone Files:**
- `bundle.ts`: Bundles one or multiple AsyncAPI documents and their references together.
- `convert.ts`: Converts AsyncAPI documents from older to newer versions or transforms OpenAPI/Postman-collection documents into AsyncAPI.
- `diff.ts`: Compares two AsyncAPI documents.
- `format.ts`: Converts AsyncAPI documents from any format to YAML, YML, or JSON.
- `optimize.ts`: Optimizes AsyncAPI documents for performance.
- `pretty.ts`: Beautifies the AsyncAPI spec file (indentation, styling) in place or outputs the formatted spec to a new file.
- `validate.ts`: Validates AsyncAPI documents for correctness.

---

#### **`src/core/`**
- **Purpose:** Provides foundational components and utilities for the CLI.
- **Subdirectories:**
- `errors/`: Centralized error definitions.
- `flags/`: Defines CLI flags and their behavior.
- `hooks/`: Event hooks used for customization.
- `models/`: Core data models used across the application.
- `utils/`: Utility functions for common operations.

- **Standalone Files:**
- `base.ts`: Base class or logic for CLI commands.
- `global.d.ts`: Global TypeScript definitions.
- `globals.ts`: Stores global variables and configurations.
- `parser.ts`: Parses AsyncAPI documents.

---

#### **`test/`**
- **Purpose:** Implements the test suite for the CLI.
- **Subdirectories:**
- `fixtures/`: Contains mock data or files for testing.
- `hooks/`: Tests related to hooks.
- `integration/`: Integration tests to verify end-to-end functionality.
- `system/`: System-level tests.
- `unit/`: Unit tests for individual modules or functions.

---

### **Use Cases**

1. **Generate AsyncAPI Artifacts:**
- Use the `generate` command to create client/server code, documentation, or other artifacts based on AsyncAPI templates.

2. **Create New Projects:**
- The `new` command helps users scaffold new AsyncAPI projects with predefined templates.

3. **Validate AsyncAPI Documents:**
- The `validate` command ensures AsyncAPI documents conform to the specification.

4. **Optimize and Format Documents:**
- The `optimize` and `pretty` commands provide tools for improving document readability and performance.

5. **Compare Documents:**
- The `diff` command enables comparison between two AsyncAPI documents to track changes.

6. **Integration with AsyncAPI Studio:**
- The `start` command integrates with the AsyncAPI Studio for editing and visualizing documents.

7. **Convert Between Formats:**
- The `convert` command supports converting AsyncAPI documents between formats like YAML and JSON.

---

This structure ensures the CLI is modular, scalable, and easy to maintain. Let me know if you need further clarification or additional details!
2 changes: 1 addition & 1 deletion markdown/docs/tools/cli/context.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: 'Context concept'
weight: 50
weight: 60
---

## Overview
Expand Down
2 changes: 1 addition & 1 deletion markdown/docs/tools/cli/metrics_collection.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: 'Metrics Collection'
weight: 60
weight: 70
---

# Metrics collection guideline
Expand Down
14 changes: 10 additions & 4 deletions markdown/docs/tools/cli/usage.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: 'Usage'
weight: 40
weight: 50
---

<!--
Expand Down Expand Up @@ -315,7 +315,7 @@ Convert asyncapi documents older to newer versions or OpenAPI/postman-collection
```
USAGE
$ asyncapi convert [SPEC-FILE] -f openapi|asyncapi|postman-collection [-h] [-o <value>] [-t <value>] [-p
client|server]
client|server][--proxyHost][--proxyPort]
ARGUMENTS
SPEC-FILE spec path, url, or context-name
Expand All @@ -329,6 +329,8 @@ FLAGS
server). Note: This option is only applicable for OpenAPI to AsyncAPI conversions.
<options: client|server>
-t, --target-version=<value> [default: 3.0.0] asyncapi version to convert to
--proxyHost Name of the Proxy Host.
--proxyPort The number of Port for enabling Proxy.
DESCRIPTION
Convert asyncapi documents older to newer versions or OpenAPI/postman-collection documents to AsyncAPI
Expand Down Expand Up @@ -699,7 +701,7 @@ optimize asyncapi specification file
USAGE
$ asyncapi optimize [SPEC-FILE] [-h] [-p
remove-components|reuse-components|move-duplicates-to-components|move-all-to-components...] [-i schema...] [-o
terminal|new-file|overwrite] [--no-tty]
terminal|new-file|overwrite] [--no-tty] [--proxyHost][--proxyPort]
ARGUMENTS
SPEC-FILE spec path, url, or context-name
Expand All @@ -715,6 +717,8 @@ FLAGS
<options: remove-components|reuse-components|move-duplicates-to-components|move-all-to
-components>
--no-tty do not use an interactive terminal
--proxyHost Name of the Proxy Host.
--proxyPort The number of Port for enabling Proxy.
DESCRIPTION
optimize asyncapi specification file
Expand Down Expand Up @@ -798,7 +802,7 @@ validate asyncapi file
```
USAGE
$ asyncapi validate [SPEC-FILE] [-h] [-w] [--log-diagnostics] [--diagnostics-format
json|stylish|junit|html|text|teamcity|pretty] [--fail-severity error|warn|info|hint] [-o <value>] [--score]
json|stylish|junit|html|text|teamcity|pretty] [--fail-severity error|warn|info|hint] [-o <value>] [--score] [--proxyHost] [--proxyPort]
ARGUMENTS
SPEC-FILE spec path, url, or context-name
Expand All @@ -815,6 +819,8 @@ FLAGS
--[no-]log-diagnostics log validation diagnostics or not
--score Compute the score of the AsyncAPI document. Scoring is based on whether the
document has description, license, server and/or channels.
--proxyHost Name of the Proxy Host.
--proxyPort The number of Port for enabling Proxy.
DESCRIPTION
validate asyncapi file
Expand Down

0 comments on commit 81e101b

Please sign in to comment.