Skip to content

Commit 77673fb

Browse files
committed
feat: deprecation, badges, styling, more options
1 parent a025f54 commit 77673fb

File tree

3 files changed

+119
-20
lines changed

3 files changed

+119
-20
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
/helm-docs
22
/cmd/helm-docs/helm-docs
33
dist
4+
.idea/
5+
*.iml

pkg/document/template.go

+113-20
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,19 @@ import (
1414
)
1515

1616
const defaultDocumentationTemplate = `{{ template "chart.header" . }}
17+
{{ template "chart.deprecationWarning" . }}
18+
19+
{{ template "chart.versionBadge" . }}
20+
{{ template "chart.typeBadge" . }}
21+
{{ template "chart.appVersionBadge" . }}
22+
1723
{{ template "chart.description" . }}
1824
19-
{{ template "chart.versionLine" . }}
25+
{{ template "chart.homepage" . }}
2026
21-
{{ template "chart.sourceLinkLine" . }}
27+
{{ template "chart.maintainersSection" . }}
28+
29+
{{ template "chart.sourcesSection" . }}
2230
2331
{{ template "chart.requirementsSection" . }}
2432
@@ -28,20 +36,32 @@ const defaultDocumentationTemplate = `{{ template "chart.header" . }}
2836
func getHeaderTemplate() string {
2937
headerTemplateBuilder := strings.Builder{}
3038
headerTemplateBuilder.WriteString(`{{ define "chart.header" }}`)
31-
headerTemplateBuilder.WriteString("{{ .Name }}\n")
32-
headerTemplateBuilder.WriteString(`{{ repeat (len .Name) "=" }}`)
39+
headerTemplateBuilder.WriteString("# {{ .Name }}\n")
3340
headerTemplateBuilder.WriteString("{{ end }}")
3441

3542
return headerTemplateBuilder.String()
3643
}
3744

38-
func getDescriptionTemplate() string {
39-
descriptionBuilder := strings.Builder{}
40-
descriptionBuilder.WriteString(`{{ define "chart.description" }}`)
41-
descriptionBuilder.WriteString("{{ if .Description }}{{ .Description }}{{ end }}")
42-
descriptionBuilder.WriteString("{{ end }}")
45+
func getDeprecatedTemplate() string {
46+
deprecatedTemplateBuilder := strings.Builder{}
47+
deprecatedTemplateBuilder.WriteString(`{{ define "chart.deprecationWarning" }}`)
48+
deprecatedTemplateBuilder.WriteString("{{ if .Deprecated }}> **:exclamation: This Helm Chart is deprecated!**{{ end }}")
49+
deprecatedTemplateBuilder.WriteString("{{ end }}")
4350

44-
return descriptionBuilder.String()
51+
return deprecatedTemplateBuilder.String()
52+
}
53+
54+
func getVersionTemplates() string {
55+
versionBuilder := strings.Builder{}
56+
versionBuilder.WriteString(`{{ define "chart.version" }}{{ .Version }}{{ end }}\n`)
57+
versionBuilder.WriteString(`{{ define "chart.versionLine" }}`)
58+
versionBuilder.WriteString("Current chart version is `{{ .Version }}`")
59+
versionBuilder.WriteString("{{ end }}")
60+
versionBuilder.WriteString(`{{ define "chart.versionBadge" }}`)
61+
versionBuilder.WriteString("![Version: {{ .Version }}](https://img.shields.io/badge/Version-{{ .Version }}-informational?style=flat-square)")
62+
versionBuilder.WriteString("{{ end }}")
63+
64+
return versionBuilder.String()
4565
}
4666

4767
func getTypeTemplate() string {
@@ -50,18 +70,61 @@ func getTypeTemplate() string {
5070
typeBuilder.WriteString(`{{ define "chart.typeLine" }}`)
5171
typeBuilder.WriteString("Current chart type is `{{ .Type }}`")
5272
typeBuilder.WriteString("{{ end }}")
73+
typeBuilder.WriteString(`{{ define "chart.typeBadge" }}`)
74+
typeBuilder.WriteString("{{ if .Type }}![Type: {{ .Type }}](https://img.shields.io/badge/Type-{{ .Type }}-informational?style=flat-square){{ end }}")
75+
typeBuilder.WriteString("{{ end }}")
5376

5477
return typeBuilder.String()
5578
}
5679

57-
func getVersionTemplates() string {
58-
versionBuilder := strings.Builder{}
59-
versionBuilder.WriteString(`{{ define "chart.version" }}{{ .Version }}{{ end }}\n`)
60-
versionBuilder.WriteString(`{{ define "chart.versionLine" }}`)
61-
versionBuilder.WriteString("Current chart version is `{{ .Version }}`")
62-
versionBuilder.WriteString("{{ end }}")
80+
func getAppVersionTemplate() string {
81+
appVersionBuilder := strings.Builder{}
82+
appVersionBuilder.WriteString(`{{ define "chart.appVersionBadge" }}`)
83+
appVersionBuilder.WriteString("{{ if .AppVersion }}![AppVersion: {{ .AppVersion }}](https://img.shields.io/badge/AppVersion-{{ .AppVersion }}-informational?style=flat-square){{ end }}")
84+
appVersionBuilder.WriteString("{{ end }}")
6385

64-
return versionBuilder.String()
86+
return appVersionBuilder.String()
87+
}
88+
89+
func getDescriptionTemplate() string {
90+
descriptionBuilder := strings.Builder{}
91+
descriptionBuilder.WriteString(`{{ define "chart.description" }}`)
92+
descriptionBuilder.WriteString("{{ if .Description }}{{ .Description }}{{ end }}")
93+
descriptionBuilder.WriteString("{{ end }}")
94+
95+
return descriptionBuilder.String()
96+
}
97+
98+
func getHomepageTemplate() string {
99+
homepageBuilder := strings.Builder{}
100+
homepageBuilder.WriteString(`{{ define "chart.homepage" }}`)
101+
homepageBuilder.WriteString("{{ if .Home }}**Homepage:** <{{ .Home }}>{{ end }}")
102+
homepageBuilder.WriteString("{{ end }}")
103+
104+
return homepageBuilder.String()
105+
}
106+
107+
func getMaintainersTemplate() string {
108+
maintainerBuilder := strings.Builder{}
109+
maintainerBuilder.WriteString(`{{ define "chart.maintainersHeader" }}## Maintainers{{ end }}`)
110+
111+
maintainerBuilder.WriteString(`{{ define "chart.maintainersTable" }}`)
112+
maintainerBuilder.WriteString("| Name | Email | Url |\n")
113+
maintainerBuilder.WriteString("| ---- | ------ | --- |\n")
114+
maintainerBuilder.WriteString(" {{- range .Maintainers }}")
115+
maintainerBuilder.WriteString("\n| {{ .Name }} | {{ .Email }} | {{ .Url }} |")
116+
maintainerBuilder.WriteString(" {{- end }}")
117+
maintainerBuilder.WriteString("{{ end }}")
118+
119+
maintainerBuilder.WriteString(`{{ define "chart.maintainersSection" }}`)
120+
maintainerBuilder.WriteString("{{ if .Maintainers }}")
121+
maintainerBuilder.WriteString(`{{ template "chart.maintainersHeader" . }}`)
122+
maintainerBuilder.WriteString("\n\n")
123+
maintainerBuilder.WriteString(`{{ template "chart.maintainersTable" . }}`)
124+
maintainerBuilder.WriteString("{{ end }}")
125+
maintainerBuilder.WriteString("{{ end }}")
126+
127+
return maintainerBuilder.String()
65128
}
66129

67130
func getSourceLinkTemplates() string {
@@ -74,12 +137,32 @@ func getSourceLinkTemplates() string {
74137
sourceLinkBuilder.WriteString("{{ if .Home }}Source code can be found [here]({{ .Home }}){{ end }}")
75138
sourceLinkBuilder.WriteString("{{ end }}")
76139

140+
sourceLinkBuilder.WriteString(`{{ define "chart.sourcesHeader" }}## Source Code{{ end}}`)
141+
142+
sourceLinkBuilder.WriteString(`{{ define "chart.sources" }}`)
143+
sourceLinkBuilder.WriteString("{{- range .Sources }}")
144+
sourceLinkBuilder.WriteString("\n* <{{ . }}>")
145+
sourceLinkBuilder.WriteString("{{- end }}")
146+
sourceLinkBuilder.WriteString("{{ end }}")
147+
148+
sourceLinkBuilder.WriteString(`{{ define "chart.sourcesSection" }}`)
149+
sourceLinkBuilder.WriteString("{{ if .Sources }}")
150+
sourceLinkBuilder.WriteString(`{{ template "chart.sourcesHeader" . }}`)
151+
sourceLinkBuilder.WriteString("\n")
152+
sourceLinkBuilder.WriteString(`{{ template "chart.sources" . }}`)
153+
sourceLinkBuilder.WriteString("{{ end }}")
154+
sourceLinkBuilder.WriteString("{{ end }}")
155+
77156
return sourceLinkBuilder.String()
78157
}
79158

80159
func getRequirementsTableTemplates() string {
81160
requirementsSectionBuilder := strings.Builder{}
82-
requirementsSectionBuilder.WriteString(`{{ define "chart.requirementsHeader" }}## Chart Requirements{{ end }}`)
161+
requirementsSectionBuilder.WriteString(`{{ define "chart.requirementsHeader" }}## Requirements{{ end }}`)
162+
163+
requirementsSectionBuilder.WriteString(`{{ define "chart.kubeVersion" }}`)
164+
requirementsSectionBuilder.WriteString("{{ if .KubeVersion }}Kubernetes: `{{ .KubeVersion }}`{{ end }}")
165+
requirementsSectionBuilder.WriteString("{{ end }}")
83166

84167
requirementsSectionBuilder.WriteString(`{{ define "chart.requirementsTable" }}`)
85168
requirementsSectionBuilder.WriteString("| Repository | Name | Version |\n")
@@ -90,19 +173,25 @@ func getRequirementsTableTemplates() string {
90173
requirementsSectionBuilder.WriteString("{{ end }}")
91174

92175
requirementsSectionBuilder.WriteString(`{{ define "chart.requirementsSection" }}`)
93-
requirementsSectionBuilder.WriteString("{{ if .Dependencies }}")
176+
requirementsSectionBuilder.WriteString("{{ if or .Dependencies .KubeVersion }}")
94177
requirementsSectionBuilder.WriteString(`{{ template "chart.requirementsHeader" . }}`)
95178
requirementsSectionBuilder.WriteString("\n\n")
179+
requirementsSectionBuilder.WriteString("{{ if .KubeVersion }}")
180+
requirementsSectionBuilder.WriteString(`{{ template "chart.kubeVersion" . }}`)
181+
requirementsSectionBuilder.WriteString("\n\n")
182+
requirementsSectionBuilder.WriteString("{{ end }}")
183+
requirementsSectionBuilder.WriteString("{{ if .Dependencies }}")
96184
requirementsSectionBuilder.WriteString(`{{ template "chart.requirementsTable" . }}`)
97185
requirementsSectionBuilder.WriteString("{{ end }}")
98186
requirementsSectionBuilder.WriteString("{{ end }}")
187+
requirementsSectionBuilder.WriteString("{{ end }}")
99188

100189
return requirementsSectionBuilder.String()
101190
}
102191

103192
func getValuesTableTemplates() string {
104193
valuesSectionBuilder := strings.Builder{}
105-
valuesSectionBuilder.WriteString(`{{ define "chart.valuesHeader" }}## Chart Values{{ end }}`)
194+
valuesSectionBuilder.WriteString(`{{ define "chart.valuesHeader" }}## Values{{ end }}`)
106195

107196
valuesSectionBuilder.WriteString(`{{ define "chart.valuesTable" }}`)
108197
valuesSectionBuilder.WriteString("| Key | Type | Default | Description |\n")
@@ -151,12 +240,16 @@ func getDocumentationTemplates(chartDirectory string) ([]string, error) {
151240

152241
return []string{
153242
getHeaderTemplate(),
243+
getDeprecatedTemplate(),
244+
getAppVersionTemplate(),
154245
getDescriptionTemplate(),
155246
getVersionTemplates(),
156247
getTypeTemplate(),
157248
getSourceLinkTemplates(),
158249
getRequirementsTableTemplates(),
159250
getValuesTableTemplates(),
251+
getHomepageTemplate(),
252+
getMaintainersTemplate(),
160253
documentationTemplate,
161254
}, nil
162255
}

pkg/helm/chart_info.go

+4
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,15 @@ var defaultValueRegex = regexp.MustCompile("^\\s*# @default -- (.*)$")
2020
type ChartMetaMaintainer struct {
2121
Email string
2222
Name string
23+
Url string
2324
}
2425

2526
type ChartMeta struct {
2627
ApiVersion string `yaml:"apiVersion"`
28+
AppVersion string `yaml:"appVersion"`
29+
KubeVersion string `yaml:"kubeVersion"`
2730
Name string
31+
Deprecated bool
2832
Description string
2933
Version string
3034
Home string

0 commit comments

Comments
 (0)