mirror of
https://github.com/kubernetes-sigs/kind.git
synced 2025-11-30 23:16:04 +07:00
89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
/*
|
|
Copyright 2018 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
// Package version implements the `version` command
|
|
package version
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"sigs.k8s.io/kind/pkg/globals"
|
|
)
|
|
|
|
// Version returns the kind CLI Semantic Version
|
|
func Version() string {
|
|
v := VersionCore
|
|
// add pre-release version info if we have it
|
|
if VersionPreRelease != "" {
|
|
v += "-" + VersionPreRelease
|
|
// if commit was set, add the + <build>
|
|
// we only do this for pre-release versions
|
|
if GitCommit != "" {
|
|
// NOTE: use 14 character short hash, like Kubernetes
|
|
v += "+" + truncate(GitCommit, 14)
|
|
}
|
|
}
|
|
return v
|
|
}
|
|
|
|
// DisplayVersion is Version() display formatted, this is what the version
|
|
// subcommand prints
|
|
func DisplayVersion() string {
|
|
return "kind v" + Version() + " " + runtime.Version() + " " + runtime.GOOS + "/" + runtime.GOARCH
|
|
}
|
|
|
|
// VersionCore is the core portion of the kind CLI version per Semantic Versioning 2.0.0
|
|
const VersionCore = "0.6.0"
|
|
|
|
// VersionPreRelease is the pre-release portion of the kind CLI version per
|
|
// Semantic Versioning 2.0.0
|
|
const VersionPreRelease = "alpha"
|
|
|
|
// GitCommit is the commit used to build the kind binary, if available.
|
|
// It is injected at build time.
|
|
var GitCommit = ""
|
|
|
|
// NewCommand returns a new cobra.Command for version
|
|
func NewCommand() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Args: cobra.NoArgs,
|
|
Use: "version",
|
|
Short: "prints the kind CLI version",
|
|
Long: "prints the kind CLI version",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
// if not -q / --quiet, show lots of info
|
|
if globals.GetLogger().V(0).Enabled() {
|
|
fmt.Println(DisplayVersion())
|
|
|
|
} else { // otherwise only show semver
|
|
fmt.Println(Version())
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
return cmd
|
|
}
|
|
|
|
func truncate(s string, maxLen int) string {
|
|
if len(s) < maxLen {
|
|
return s
|
|
}
|
|
return s[:maxLen]
|
|
}
|