diff --git a/.goreleaser.yml b/.goreleaser.yml index 67481b9..00b3f59 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -20,6 +20,7 @@ builds: - -a ldflags: - -extldflags "-static" + - -X main.version={{.Tag}} archives: - format: tar.gz @@ -58,4 +59,4 @@ changelog: sort: asc filters: exclude: - - '^test:' \ No newline at end of file + - '^test:' diff --git a/Readme.md b/Readme.md index 1067d3d..e9a026f 100644 --- a/Readme.md +++ b/Readme.md @@ -90,6 +90,7 @@ Usage: ./bin/kubeconform [OPTION]... [FILE OR FOLDER]... disallow additional properties not in schema -summary print a summary at the end (ignored for junit output) + -v show version information -verbose print results for all resources (ignored for tap and junit output) ``` diff --git a/cmd/kubeconform/main.go b/cmd/kubeconform/main.go index 6ac0e7e..af0cbc6 100644 --- a/cmd/kubeconform/main.go +++ b/cmd/kubeconform/main.go @@ -15,6 +15,8 @@ import ( "github.com/yannh/kubeconform/pkg/validator" ) +var version = "development" + func processResults(cancel context.CancelFunc, o output.Output, validationResults <-chan validator.Result, exitOnError bool) <-chan bool { success := true result := make(chan bool) @@ -48,6 +50,9 @@ func realMain() int { cfg, out, err := config.FromFlags(os.Args[0], os.Args[1:]) if cfg.Help { return 0 + } else if cfg.Version { + fmt.Println(version) + return 0 } else if out != "" { fmt.Println(out) return 1 diff --git a/pkg/config/config.go b/pkg/config/config.go index d165f07..22cb76d 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -26,6 +26,7 @@ type Config struct { IgnoreMissingSchemas bool IgnoreFilenamePatterns []string Help bool + Version bool } type arrayParam []string @@ -79,6 +80,7 @@ func FromFlags(progName string, args []string) (Config, string, error) { flags.StringVar(&c.Cache, "cache", "", "cache schemas downloaded via HTTP to this folder") flags.StringVar(&c.CPUProfileFile, "cpu-prof", "", "debug - log CPU profiling to file") flags.BoolVar(&c.Help, "h", false, "show help information") + flags.BoolVar(&c.Version, "v", false, "show version information") flags.Usage = func() { fmt.Fprintf(os.Stderr, "Usage: %s [OPTION]... [FILE OR FOLDER]...\n", progName) diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 78f1ff6..038aa3d 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -70,6 +70,19 @@ func TestFromFlags(t *testing.T) { RejectKinds: map[string]struct{}{}, }, }, + { + []string{"-v"}, + Config{ + Files: []string{}, + Version: true, + KubernetesVersion: "master", + NumberOfWorkers: 4, + OutputFormat: "text", + SchemaLocations: nil, + SkipKinds: map[string]struct{}{}, + RejectKinds: map[string]struct{}{}, + }, + }, { []string{"-skip", "a,b,c"}, Config{