@@ -718,6 +718,7 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
718
718
type downloadResults struct {
719
719
releaseName string
720
720
chartPath string
721
+ err error
721
722
}
722
723
errs := []error {}
723
724
@@ -739,11 +740,17 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
739
740
}
740
741
close (jobQueue )
741
742
},
742
- func (_ int ) {
743
+ func (workerIndex int ) {
743
744
for release := range jobQueue {
744
745
var chartPath string
745
746
746
- if shouldChartify , opts := st .PrepareChartify (release ); shouldChartify {
747
+ shouldChartify , opts , err := st .PrepareChartify (helm , release , workerIndex )
748
+ if err != nil {
749
+ results <- & downloadResults {err : err }
750
+ return
751
+ }
752
+
753
+ if shouldChartify {
747
754
c := chartify .New (
748
755
chartify .HelmBin (st .DefaultHelmBinary ),
749
756
chartify .UseHelm3 (helm3 ),
@@ -787,12 +794,18 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
787
794
}
788
795
}
789
796
790
- results <- & downloadResults {release .Name , chartPath }
797
+ results <- & downloadResults {releaseName : release .Name , chartPath : chartPath }
791
798
}
792
799
},
793
800
func () {
794
801
for i := 0 ; i < len (st .Releases ); i ++ {
795
802
downloadRes := <- results
803
+
804
+ if downloadRes .err != nil {
805
+ errs = append (errs , downloadRes .err )
806
+
807
+ return
808
+ }
796
809
temp [downloadRes .releaseName ] = downloadRes .chartPath
797
810
}
798
811
},
@@ -1886,12 +1899,7 @@ func (st *HelmState) generateTemporaryValuesFiles(values []interface{}, missingF
1886
1899
return generatedFiles , nil
1887
1900
}
1888
1901
1889
- func (st * HelmState ) namespaceAndValuesFlags (helm helmexec.Interface , release * ReleaseSpec , workerIndex int ) ([]string , error ) {
1890
- flags := []string {}
1891
- if release .Namespace != "" {
1892
- flags = append (flags , "--namespace" , release .Namespace )
1893
- }
1894
-
1902
+ func (st * HelmState ) generateVanillaValuesFiles (release * ReleaseSpec ) ([]string , error ) {
1895
1903
values := []interface {}{}
1896
1904
for _ , v := range release .Values {
1897
1905
switch typedValue := v .(type ) {
@@ -1918,12 +1926,14 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R
1918
1926
return nil , err
1919
1927
}
1920
1928
1921
- for _ , f := range generatedFiles {
1922
- flags = append (flags , "--values" , f )
1923
- }
1924
-
1925
1929
release .generatedValues = append (release .generatedValues , generatedFiles ... )
1926
1930
1931
+ return generatedFiles , nil
1932
+ }
1933
+
1934
+ func (st * HelmState ) generateSecretValuesFiles (helm helmexec.Interface , release * ReleaseSpec , workerIndex int ) ([]string , error ) {
1935
+ var generatedFiles []string
1936
+
1927
1937
for _ , value := range release .Secrets {
1928
1938
paths , skip , err := st .storage ().resolveFile (release .MissingFileHandler , "secrets" , release .ValuesPathPrefix + value )
1929
1939
if err != nil {
@@ -1944,9 +1954,45 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R
1944
1954
return nil , err
1945
1955
}
1946
1956
1947
- release .generatedValues = append (release .generatedValues , valfile )
1948
- flags = append (flags , "--values" , valfile )
1957
+ generatedFiles = append (generatedFiles , valfile )
1958
+ }
1959
+
1960
+ release .generatedValues = append (release .generatedValues , generatedFiles ... )
1961
+
1962
+ return generatedFiles , nil
1963
+ }
1964
+
1965
+ func (st * HelmState ) generateValuesFiles (helm helmexec.Interface , release * ReleaseSpec , workerIndex int ) ([]string , error ) {
1966
+ valuesFiles , err := st .generateVanillaValuesFiles (release )
1967
+ if err != nil {
1968
+ return nil , err
1969
+ }
1970
+
1971
+ secretValuesFiles , err := st .generateSecretValuesFiles (helm , release , workerIndex )
1972
+ if err != nil {
1973
+ return nil , err
1974
+ }
1975
+
1976
+ files := append (valuesFiles , secretValuesFiles ... )
1977
+
1978
+ return files , nil
1979
+ }
1980
+
1981
+ func (st * HelmState ) namespaceAndValuesFlags (helm helmexec.Interface , release * ReleaseSpec , workerIndex int ) ([]string , error ) {
1982
+ flags := []string {}
1983
+ if release .Namespace != "" {
1984
+ flags = append (flags , "--namespace" , release .Namespace )
1949
1985
}
1986
+
1987
+ generatedFiles , err := st .generateValuesFiles (helm , release , workerIndex )
1988
+ if err != nil {
1989
+ return nil , err
1990
+ }
1991
+
1992
+ for _ , f := range generatedFiles {
1993
+ flags = append (flags , "--values" , f )
1994
+ }
1995
+
1950
1996
if len (release .SetValues ) > 0 {
1951
1997
for _ , set := range release .SetValues {
1952
1998
if set .Value != "" {
0 commit comments