Skip to content

Commit bca6b5b

Browse files
committed
feat(cmd): create docs command that starts documentation presentation from embedded fs
1 parent d541c70 commit bca6b5b

File tree

4 files changed

+75
-3
lines changed

4 files changed

+75
-3
lines changed

cmd/docs.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"log/slog"
6+
7+
tea "github.com/charmbracelet/bubbletea"
8+
"github.com/spf13/cobra"
9+
10+
"github.com/museslabs/kyma/docs"
11+
"github.com/museslabs/kyma/internal/config"
12+
"github.com/museslabs/kyma/internal/logger"
13+
"github.com/museslabs/kyma/internal/tui"
14+
)
15+
16+
var docsCmd = &cobra.Command{
17+
Use: "docs",
18+
Short: "Start documentation as a presentation",
19+
Args: cobra.NoArgs,
20+
RunE: func(cmd *cobra.Command, args []string) error {
21+
if err := logger.Load(logPath); err != nil {
22+
return fmt.Errorf("failed to initialize slog: %w", err)
23+
}
24+
25+
slog.Info("Starting Kyma Docs")
26+
27+
if err := config.Load(configPath); err != nil {
28+
slog.Error("Failed to load config", "error", err, "config_path", configPath)
29+
return err
30+
}
31+
32+
data, err := docs.FS.ReadFile("presentation.md")
33+
if err != nil {
34+
slog.Error(
35+
"Failed to read presentation file",
36+
"error",
37+
err,
38+
"filename",
39+
"presentation.md",
40+
)
41+
return err
42+
}
43+
44+
root, err := parseSlides(string(data))
45+
if err != nil {
46+
slog.Error("Failed to parse slides", "error", err, "filename", "presentation.md")
47+
return err
48+
}
49+
50+
slog.Info("Successfully parsed presentation")
51+
52+
p := tea.NewProgram(
53+
tui.New(root, "presentation.md"),
54+
tea.WithAltScreen(),
55+
tea.WithMouseAllMotion(),
56+
)
57+
58+
slog.Info("Starting TUI program")
59+
if _, err := p.Run(); err != nil {
60+
slog.Error("TUI program failed", "error", err)
61+
return err
62+
}
63+
64+
slog.Info("Kyma docs session ended")
65+
return nil
66+
},
67+
}

cmd/root.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func init() {
3333
StringVarP(&logPath, "log", "l", "", "Path to log file (default: ~/.config/kyma/logs/<timestamp>.kyma.log)")
3434
rootCmd.Flags().BoolVarP(&notes, "notes", "n", false, "Run in speaker notes mode")
3535
rootCmd.AddCommand(versionCmd)
36+
rootCmd.AddCommand(docsCmd)
3637
}
3738

3839
var rootCmd = &cobra.Command{

cmd/version.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ var version = "dev"
1111
var versionCmd = &cobra.Command{
1212
Use: "version",
1313
Short: "Print the version number of kyma",
14-
Args: func(cmd *cobra.Command, args []string) error {
15-
return cobra.NoArgs(cmd, args)
16-
},
14+
Args: cobra.NoArgs,
1715
Run: func(cmd *cobra.Command, args []string) {
1816
fmt.Printf("Kyma %s\n", version)
1917
},

docs/docs.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package docs
2+
3+
import "embed"
4+
5+
//go:embed *
6+
var FS embed.FS

0 commit comments

Comments
 (0)