Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support and About command implementation #909

Merged
merged 15 commits into from
Jan 7, 2025
45 changes: 45 additions & 0 deletions cmd/about.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package cmd

import (
_ "embed"
"fmt"
"os"

"github.com/charmbracelet/glamour"
"github.com/spf13/cobra"
)

//go:embed markdown/about.md
var aboutMarkdown string

// aboutCmd represents the about command
var aboutCmd = &cobra.Command{
Use: "about",
Short: "Learn about Atmos",
Long: `Display information about Atmos, its features, and benefits.`,
Args: cobra.NoArgs,
DisableSuggestions: true,
SilenceUsage: true,
SilenceErrors: true,
RunE: func(cmd *cobra.Command, args []string) error {
renderer, err := glamour.NewTermRenderer(
glamour.WithAutoStyle(),
glamour.WithWordWrap(80),
)
if err != nil {
return fmt.Errorf("failed to create markdown renderer: %w", err)
}

out, err := renderer.Render(aboutMarkdown)
if err != nil {
return fmt.Errorf("failed to render about documentation: %w", err)
}

fmt.Fprint(os.Stdout, out)
return nil
},
}

func init() {
RootCmd.AddCommand(aboutCmd)
}
20 changes: 20 additions & 0 deletions cmd/markdown/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# About Atmos

Atmos is an open-source framework for managing the configuration of Infrastructure as Code (IaC) at scale using Stacks.

It simplifies the deployment of infrastructure by providing a consistent, YAML-driven configuration system using tools like Terraform and Helmfile. Atmos helps teams adopt best practices, enforce standards, and automate complex workflows across environments.

## Key Features

- **Reusable Components**: Modular building blocks for defining infrastructure.
- **Stacks**: Environment-specific configurations for managing multiple AWS accounts.
- **YAML-Based**: Declarative configurations for easy maintenance.
- **Terraform & Helmfile**: Unified commands for seamless integration.
- **Automation-Ready**: Perfect for CI/CD pipelines and DevOps workflows.
- **Scalable**: Designed for multi-account, multi-environment AWS setups.

## Why Atmos?
Atmos reduces complexity, promotes consistency, and accelerates delivery, making it an ideal choice
for organizations managing large-scale AWS infrastructure.

Learn more [here](https://atmos.tools)
31 changes: 31 additions & 0 deletions cmd/markdown/support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Support

## Community Resources

Need help? Join the [Atmos community!](https://cloudposse.com/slack)

- **Slack Community**: Connect with active users in the `#atmos` channel and get help anytime [on slack](https://cloudposse.com/slack).
- **GitHub Discussions**: Post questions or join conversations with the community and Cloud Posse.
- **Issue Tracker**: Found a bug? Report it [here](https://github.com/cloudposse/atmos/issues).

## Office Hours

We hold **office hours every Wednesday at 11:30 AM PST**. Join us for live Q&A sessions.

[](https://cloudposse.com/office-hours)

Cerebrovinny marked this conversation as resolved.
Show resolved Hide resolved
## Paid Support

We offer priority support to GitHub Sponsors (Enterprise Tier).

[](https://github.com/sponsors/cloudposse)
Cerebrovinny marked this conversation as resolved.
Show resolved Hide resolved

Included with sponsorship, we host **30-minute workshops twice a week** to:
- Answer your questions.
- Assist with debugging issues.
- Discuss architectural decisions.

Workshops are tailored to help you succeed with Atmos, our AWS Reference Architectures, and related tools.

> **Note**: Paid support includes priority responses.
> [](https://github.com/sponsors/cloudposse)
Cerebrovinny marked this conversation as resolved.
Show resolved Hide resolved
45 changes: 45 additions & 0 deletions cmd/support.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package cmd

import (
_ "embed"
"fmt"
"os"

"github.com/charmbracelet/glamour"
"github.com/spf13/cobra"
)

//go:embed markdown/support.md
var supportMarkdown string

// supportCmd represents the support command
var supportCmd = &cobra.Command{
Use: "support",
Short: "Show Atmos support options",
Long: `Display information about Atmos support options, including community resources and paid support.`,
Args: cobra.NoArgs,
DisableSuggestions: true,
SilenceUsage: true,
SilenceErrors: true,
RunE: func(cmd *cobra.Command, args []string) error {
renderer, err := glamour.NewTermRenderer(
glamour.WithAutoStyle(),
glamour.WithWordWrap(80),
)
if err != nil {
return fmt.Errorf("failed to create markdown renderer: %w", err)
}

out, err := renderer.Render(supportMarkdown)
if err != nil {
return fmt.Errorf("failed to render support documentation: %w", err)
}

fmt.Fprint(os.Stdout, out)
return nil
},
}

func init() {
RootCmd.AddCommand(supportCmd)
}
Loading