client/pkg/kn/commands/version.go

63 lines
1.9 KiB
Go

// Copyright © 2019 The Knative 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 commands
import (
"fmt"
"strings"
"github.com/spf13/cobra"
)
var Version string
var BuildDate string
var GitRevision string
var ServingVersion string
// VersionsAPIs hold the list of supported versions and APIs for component kn can work with
type VersionsAPIs struct {
Versions, APIs []string
}
// update this var as we increase the serving version in go.mod
var knServingDep = "v0.8.0"
var supportMatrix = map[string]*VersionsAPIs{
knServingDep: {[]string{"v0.8.0", "v0.7.1"}, []string{"v1alpha1"}},
}
// NewVersionCommand implements 'kn version' command
func NewVersionCommand(p *KnParams) *cobra.Command {
versionCmd := &cobra.Command{
Use: "version",
Short: "Prints the client version",
RunE: func(cmd *cobra.Command, args []string) error {
fmt.Printf("Version: %s\n", Version)
fmt.Printf("Build Date: %s\n", BuildDate)
fmt.Printf("Git Revision: %s\n", GitRevision)
fmt.Printf("Support:\n")
if m, ok := supportMatrix[ServingVersion]; ok {
fmt.Printf("- Serving: %s\n", strings.Join(m.Versions, " "))
fmt.Printf("- API(s): %s\n", strings.Join(m.APIs, " "))
} else {
// ensure the go build works when we update,
// but version command tests fails to prevent shipping
fmt.Printf("- Serving: %s\n", ServingVersion)
}
return nil
},
}
return versionCmd
}