MCPcopy
hub / github.com/yannh/kubeconform / kubeconform

Function kubeconform

cmd/kubeconform/main.go:49–157  ·  view source on GitHub ↗
(cfg config.Config)

Source from the content-addressed store, hash-verified

47}
48
49func 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 }

Callers 1

mainFunction · 0.85

Calls 9

ValidateResourceMethod · 0.95
FlushMethod · 0.95
NewFunction · 0.92
NewFunction · 0.92
FromStreamFunction · 0.92
FromFilesFunction · 0.92
processResultsFunction · 0.85
ModeMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected