|
|
@ -548,22 +548,23 @@ spec:
|
|
|
|
var Stderr io.Writer = os.Stderr
|
|
|
|
var Stderr io.Writer = os.Stderr
|
|
|
|
|
|
|
|
|
|
|
|
// CreateFrom creates a new chart, but scaffolds it from the src chart.
|
|
|
|
// CreateFrom creates a new chart, but scaffolds it from the src chart.
|
|
|
|
// Deprecated: Use CreateFromWithMetadata
|
|
|
|
// Deprecated: Use CreateFromWithOverride
|
|
|
|
// TODO Helm 4: Fold CreateFromWithMetadata back into CreateFrom
|
|
|
|
// TODO Helm 4: Fold CreateFromWithOverride back into CreateFrom
|
|
|
|
func CreateFrom(chartfile *chart.Metadata, dest, src string) error {
|
|
|
|
func CreateFrom(chartfile *chart.Metadata, dest, src string) error {
|
|
|
|
return CreateFromWithMetadata(chartfile.Name, dest, src, false)
|
|
|
|
return CreateFromWithOverride(chartfile.Name, dest, src, chartfile)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// CreateFromWithMetadata creates a new chart, but scaffolds it from the src chart and
|
|
|
|
// CreateFromWithOverride creates a new chart, but scaffolds it from the src chart and
|
|
|
|
// provides the option to preserve custom metadata (Chart.yaml) files.
|
|
|
|
// provides the option to override the chart's metadata (Chart.yaml).
|
|
|
|
func CreateFromWithMetadata(name, dest, src string, keepMetadata bool) error {
|
|
|
|
func CreateFromWithOverride(name, dest, src string, override *chart.Metadata) error {
|
|
|
|
schart, err := loader.Load(src)
|
|
|
|
schart, err := loader.Load(src)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return errors.Wrapf(err, "could not load %s", src)
|
|
|
|
return errors.Wrapf(err, "could not load %s", src)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if err = setMetadata(schart, name, keepMetadata); err != nil {
|
|
|
|
// Override the chart's metadata if the user requested it
|
|
|
|
return errors.Wrap(err, "could not set metadata")
|
|
|
|
if err := setMetadata(schart, name, override); err != nil {
|
|
|
|
|
|
|
|
return errors.Wrap(err, "setting metadata")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var updatedTemplates []*chart.File
|
|
|
|
var updatedTemplates []*chart.File
|
|
|
@ -733,20 +734,36 @@ func validateChartName(name string) error {
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func setMetadata(schart *chart.Chart, name string, keepMetadata bool) error {
|
|
|
|
func setMetadata(schart *chart.Chart, name string, override *chart.Metadata) error {
|
|
|
|
|
|
|
|
// Override the source chart's metadata and raw chart file content
|
|
|
|
|
|
|
|
// if the user provided a chart.Metadata struct
|
|
|
|
|
|
|
|
if override != nil {
|
|
|
|
|
|
|
|
schart.Metadata = override
|
|
|
|
for _, f := range schart.Raw {
|
|
|
|
for _, f := range schart.Raw {
|
|
|
|
if f.Name == ChartfileName {
|
|
|
|
if f.Name == ChartfileName {
|
|
|
|
// Overwrite Metadata only if flag was not set by user to keep backwards compatibility.
|
|
|
|
metadataBytes, err := yaml.Marshal(schart.Metadata)
|
|
|
|
if !keepMetadata {
|
|
|
|
if err != nil {
|
|
|
|
f.Data = []byte(fmt.Sprintf(defaultChartfile, name))
|
|
|
|
return errors.Wrap(err, "marshalling metadata override")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Deserialize Metadata and check for errors
|
|
|
|
f.Data = metadataBytes
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Unmarshal Chart.yaml from source directory while replacing
|
|
|
|
|
|
|
|
// all <CHARTNAME> placeholders if no override was requested
|
|
|
|
|
|
|
|
for _, f := range schart.Raw {
|
|
|
|
|
|
|
|
if f.Name == ChartfileName {
|
|
|
|
var m chart.Metadata
|
|
|
|
var m chart.Metadata
|
|
|
|
if err := yaml.Unmarshal(transform(string(f.Data), name), &m); err != nil {
|
|
|
|
if err := yaml.Unmarshal(transform(string(f.Data), name), &m); err != nil {
|
|
|
|
return errors.Wrap(err, "transforming charts file")
|
|
|
|
return errors.Wrap(err, "transforming charts file")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
schart.Metadata = &m
|
|
|
|
schart.Metadata = &m
|
|
|
|
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|