diff --git a/README.md b/README.md index 33d66fd..408567d 100644 --- a/README.md +++ b/README.md @@ -330,6 +330,14 @@ The order is important. The first comment line(s) must be the one specifying the the description for the field. The `@default` comment must follow. See [here](./example-charts/custom-template/values.yaml) for an example. +### Ignoring values +In cases you would like to ignore certain values, you can mark it with @ignored tag: + +```yaml +# @ignored +service: + port: 8080 +``` ### Spaces and Dots in keys In the old-style comment, if a key name contains any "." or " " characters, that section of the path must be quoted in diff --git a/example-charts/ignored-values-example/Chart.yaml b/example-charts/ignored-values-example/Chart.yaml new file mode 100644 index 0000000..c0c228d --- /dev/null +++ b/example-charts/ignored-values-example/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: ignored-values-example +description: Based on best-values-example +version: "0.1.0" +home: "https://github.com/norwoodj/helm-docs/tree/master/example-charts/ignored-values-example" +sources: ["https://github.com/norwoodj/helm-docs/tree/master/example-charts/ignored-values-example"] +engine: gotpl +type: application +maintainers: + - email: jakub.buczak@gmail.com + name: Jakub Buczak diff --git a/example-charts/ignored-values-example/README.md b/example-charts/ignored-values-example/README.md new file mode 100644 index 0000000..414c2f6 --- /dev/null +++ b/example-charts/ignored-values-example/README.md @@ -0,0 +1,35 @@ +# ignored-values-example + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) + +Based on best-values-example + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| Jakub Buczak | | | + +## Source Code + +* + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| config.databasesToCreate[0] | string | `"postgresql"` | default database for storage of database metadata | +| config.databasesToCreate[1] | string | `"hashbash"` | database for the [hashbash](https://github.com/norwoodj/hashbash) project | +| config.usersToCreate[0] | object | `{"admin":true,"name":"root"}` | admin user | +| config.usersToCreate[1] | object | `{"name":"hashbash","readwriteDatabases":["hashbash"]}` | user with access to the database with the same name | +| configWithAllValuesIgnored | object | `{}` | | +| statefulset.extraVolumes | list | `[{"emptyDir":{},"name":"data"}]` | Additional volumes to be mounted into the database container | +| statefulset.image.repository | string | `"jnorwood/postgresq"` | Image to use for deploying, must support an entrypoint which creates users/databases from appropriate config files | +| statefulset.image.tag | string | `"11"` | | +| statefulset.livenessProbe | object | `{"enabled":false}` | Configure the healthcheck for the database | +| statefulset.podLabels | object | `{}` | The labels to be applied to instances of the database | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.9.1](https://github.com/norwoodj/helm-docs/releases/v1.9.1) diff --git a/example-charts/ignored-values-example/values.yaml b/example-charts/ignored-values-example/values.yaml new file mode 100644 index 0000000..8e376d9 --- /dev/null +++ b/example-charts/ignored-values-example/values.yaml @@ -0,0 +1,51 @@ +statefulset: + image: + # -- Image to use for deploying, must support an entrypoint + # which creates users/databases from appropriate config files + repository: jnorwood/postgresq + tag: "11" + + # -- Additional volumes to be mounted into the database container + extraVolumes: + - name: data + emptyDir: {} + + # -- Configure the healthcheck for the database + livenessProbe: + enabled: false + + # -- The labels to be applied to instances of the database + podLabels: {} + +config: + databasesToCreate: + # -- default database for storage of database metadata + - postgresql + + # -- database for the [hashbash](https://github.com/norwoodj/hashbash) project + - hashbash + + usersToCreate: + # -- admin user + - {name: root, admin: true} + + # -- user with access to the database with the same name + - {name: hashbash, readwriteDatabases: [hashbash]} + + # @ignore test + - {name: test, readDatabases: [test]} + +# @ignore +internalConfig: + rpcPort: 8080 + # -- this should also be ignored + generateData: true + +# @ignore +ignoredConfig: 6 + +configWithAllValuesIgnored: + # @ignore + ignoredOne: true + # @ignore + ignoredTwo: "?" diff --git a/pkg/helm/chart_info.go b/pkg/helm/chart_info.go index cdf95a2..58ef471 100644 --- a/pkg/helm/chart_info.go +++ b/pkg/helm/chart_info.go @@ -146,6 +146,21 @@ func parseChartRequirementsFile(chartDirectory string, apiVersion string) (Chart return chartRequirements, nil } +func removeIgnored(rootNode *yaml.Node, parentKind yaml.Kind) { + newContent := make([]*yaml.Node , 0, len(rootNode.Content)) + for i := 0; i < len(rootNode.Content); i++ { + node := rootNode.Content[i] + if !strings.Contains(node.HeadComment, "@ignore") { + removeIgnored(node, node.Kind) + newContent = append(newContent, node) + } else if parentKind == yaml.MappingNode { + // for parentKind each yaml key is represented by two nodes + i++ + } + } + rootNode.Content = newContent +} + func parseChartValuesFile(chartDirectory string) (yaml.Node, error) { valuesPath := filepath.Join(chartDirectory, viper.GetString("values-file")) yamlFileContents, err := getYamlFileContents(valuesPath) @@ -156,6 +171,7 @@ func parseChartValuesFile(chartDirectory string) (yaml.Node, error) { } err = yaml.Unmarshal(yamlFileContents, &values) + removeIgnored(&values, values.Kind) return values, err }