fix(lint): only return count of actually linted charts

pull/922/head
Adnan Abdulhussein 9 years ago
parent f3e754794e
commit dda61f6074

@ -52,7 +52,6 @@ func init() {
} }
var errLintNoChart = errors.New("No chart found for linting (missing Chart.yaml)") var errLintNoChart = errors.New("No chart found for linting (missing Chart.yaml)")
var errLintFailed = errors.New("Lint failed")
func lintCmd(cmd *cobra.Command, args []string) error { func lintCmd(cmd *cobra.Command, args []string) error {
paths := []string{"."} paths := []string{"."}
@ -60,18 +59,32 @@ func lintCmd(cmd *cobra.Command, args []string) error {
paths = args paths = args
} }
var total int
var failures int var failures int
for _, path := range paths { for _, path := range paths {
if err := lintChart(path); err != nil { if linter, err := lintChart(path); err != nil {
fmt.Println("==> Skipping", path)
fmt.Println(err) fmt.Println(err)
if err != errLintNoChart { } else {
fmt.Println("==> Linting", path)
if len(linter.Messages) == 0 {
fmt.Println("Lint OK")
}
for _, msg := range linter.Messages {
fmt.Println(msg)
}
total = total + 1
if linter.HighestSeverity >= support.ErrorSev {
failures = failures + 1 failures = failures + 1
} }
} }
fmt.Println("") fmt.Println("")
} }
msg := fmt.Sprintf("%d chart(s) linted", len(paths)) msg := fmt.Sprintf("%d chart(s) linted", total)
if failures > 0 { if failures > 0 {
return fmt.Errorf("%s, %d chart(s) failed", msg, failures) return fmt.Errorf("%s, %d chart(s) failed", msg, failures)
} }
@ -81,23 +94,25 @@ func lintCmd(cmd *cobra.Command, args []string) error {
return nil return nil
} }
func lintChart(path string) error { func lintChart(path string) (support.Linter, error) {
var chartPath string var chartPath string
linter := support.Linter{}
if strings.HasSuffix(path, ".tgz") { if strings.HasSuffix(path, ".tgz") {
tempDir, err := ioutil.TempDir("", "helm-lint") tempDir, err := ioutil.TempDir("", "helm-lint")
if err != nil { if err != nil {
return err return linter, err
} }
defer os.RemoveAll(tempDir) defer os.RemoveAll(tempDir)
file, err := os.Open(path) file, err := os.Open(path)
if err != nil { if err != nil {
return err return linter, err
} }
defer file.Close() defer file.Close()
if err = chartutil.Expand(tempDir, file); err != nil { if err = chartutil.Expand(tempDir, file); err != nil {
return err return linter, err
} }
base := strings.Split(filepath.Base(path), "-")[0] base := strings.Split(filepath.Base(path), "-")[0]
@ -108,26 +123,8 @@ func lintChart(path string) error {
// Guard: Error out of this is not a chart. // Guard: Error out of this is not a chart.
if _, err := os.Stat(filepath.Join(chartPath, "Chart.yaml")); err != nil { if _, err := os.Stat(filepath.Join(chartPath, "Chart.yaml")); err != nil {
fmt.Println("==> Skipping", path) return linter, errLintNoChart
return errLintNoChart
} }
fmt.Println("==> Linting", path) return lint.All(chartPath), nil
linter := lint.All(chartPath)
if len(linter.Messages) == 0 {
fmt.Println("Lint OK")
return nil
}
for _, msg := range linter.Messages {
fmt.Println(msg)
}
if linter.HighestSeverity == support.ErrorSev {
return errLintFailed
}
return nil
} }

Loading…
Cancel
Save