(cfg config.Config)
| 47 | } |
| 48 | |
| 49 | func kubeconform(cfg config.Config) int { |
| 50 | var err error |
| 51 | cpuProfileFile := os.Getenv("KUBECONFORM_CPUPROFILE_FILE") |
| 52 | if cpuProfileFile != "" { |
| 53 | f, err := os.Create(cpuProfileFile) |
| 54 | if err != nil { |
| 55 | log.Fatal("could not create CPU profile: ", err) |
| 56 | } |
| 57 | defer f.Close() |
| 58 | if err := pprof.StartCPUProfile(f); err != nil { |
| 59 | log.Fatal("could not start CPU profile: ", err) |
| 60 | } |
| 61 | runtime.SetBlockProfileRate(1) |
| 62 | |
| 63 | defer pprof.StopCPUProfile() |
| 64 | } |
| 65 | |
| 66 | useStdin := false |
| 67 | if len(cfg.Files) == 0 || (len(cfg.Files) == 1 && cfg.Files[0] == "-") { |
| 68 | stat, _ := os.Stdin.Stat() |
| 69 | if (stat.Mode() & os.ModeCharDevice) != 0 { |
| 70 | log.Fatalf("failing to read data from stdin") |
| 71 | } |
| 72 | useStdin = true |
| 73 | } |
| 74 | |
| 75 | var o output.Output |
| 76 | if o, err = output.New(os.Stdout, cfg.OutputFormat, cfg.Summary, useStdin, cfg.Verbose); err != nil { |
| 77 | fmt.Fprintln(os.Stderr, err) |
| 78 | return 1 |
| 79 | } |
| 80 | var v validator.Validator |
| 81 | v, err = validator.New(cfg.SchemaLocations, validator.Opts{ |
| 82 | Cache: cfg.Cache, |
| 83 | Debug: cfg.Debug, |
| 84 | SkipTLS: cfg.SkipTLS, |
| 85 | SkipKinds: cfg.SkipKinds, |
| 86 | RejectKinds: cfg.RejectKinds, |
| 87 | KubernetesVersion: cfg.KubernetesVersion.String(), |
| 88 | Strict: cfg.Strict, |
| 89 | IgnoreMissingSchemas: cfg.IgnoreMissingSchemas, |
| 90 | }) |
| 91 | if err != nil { |
| 92 | fmt.Fprintln(os.Stderr, err) |
| 93 | return 1 |
| 94 | } |
| 95 | |
| 96 | validationResults := make(chan validator.Result) |
| 97 | ctx, cancel := context.WithCancel(context.Background()) |
| 98 | successChan := processResults(cancel, o, validationResults, cfg.ExitOnError) |
| 99 | |
| 100 | var resourcesChan <-chan resource.Resource |
| 101 | var errors <-chan error |
| 102 | if useStdin { |
| 103 | resourcesChan, errors = resource.FromStream(ctx, "stdin", os.Stdin) |
| 104 | } else { |
| 105 | resourcesChan, errors = resource.FromFiles(ctx, cfg.Files, cfg.IgnoreFilenamePatterns, cfg.NumberOfWorkers) |
| 106 | } |
no test coverage detected