-
Notifications
You must be signed in to change notification settings - Fork 19
/
main.go
76 lines (65 loc) · 1.33 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
"github.com/kubecolor/kubecolor/config"
"github.com/spf13/viper"
)
var flags = struct {
file string
}{
file: filepath.Join("config", "theme.go"),
}
func init() {
flag.StringVar(&flags.file, "file", flags.file, "Path to theme.go file")
}
func main() {
flag.Parse()
prog := Program{}
if err := prog.Run(); err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err)
os.Exit(1)
}
}
type Program struct {
viper *viper.Viper
categories []Category
}
func (p *Program) Run() error {
v := config.NewViper()
if err := config.ApplyThemePreset(v); err != nil {
return err
}
p.viper = v
categories, err := ParseCategories()
if err != nil {
return fmt.Errorf("parse categories: %w", err)
}
p.categories = categories
if err := p.Print(); err != nil {
return fmt.Errorf("print: %w", err)
}
return nil
}
func (p *Program) Print() error {
md := MarkdownPrinter{Program: p}
if err := md.Print(); err != nil {
return fmt.Errorf("markdown: %w", err)
}
fmt.Println()
yaml := YAMLPrinter{Program: p}
if err := yaml.Print(); err != nil {
return fmt.Errorf("yaml: %w", err)
}
return nil
}
func (p *Program) findCategory(typeName string) (Category, bool) {
for _, c := range p.categories {
if c.Type == typeName {
return c, true
}
}
return Category{}, false
}