summaryrefslogtreecommitdiff
path: root/vendor/github.com/authzed/zed/internal/cmd/version.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/authzed/zed/internal/cmd/version.go')
-rw-r--r--vendor/github.com/authzed/zed/internal/cmd/version.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/github.com/authzed/zed/internal/cmd/version.go b/vendor/github.com/authzed/zed/internal/cmd/version.go
new file mode 100644
index 0000000..b87ec66
--- /dev/null
+++ b/vendor/github.com/authzed/zed/internal/cmd/version.go
@@ -0,0 +1,64 @@
+package cmd
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/gookit/color"
+ "github.com/jzelinskie/cobrautil/v2"
+ "github.com/mattn/go-isatty"
+ "github.com/spf13/cobra"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/metadata"
+
+ "github.com/authzed/authzed-go/pkg/responsemeta"
+ v1 "github.com/authzed/authzed-go/proto/authzed/api/v1"
+
+ "github.com/authzed/zed/internal/client"
+ "github.com/authzed/zed/internal/console"
+)
+
+func versionCmdFunc(cmd *cobra.Command, _ []string) error {
+ if !isatty.IsTerminal(os.Stdout.Fd()) {
+ color.Disable()
+ }
+
+ includeRemoteVersion := cobrautil.MustGetBool(cmd, "include-remote-version")
+ hasContext := false
+ if includeRemoteVersion {
+ configStore, secretStore := client.DefaultStorage()
+ _, err := client.GetCurrentTokenWithCLIOverride(cmd, configStore, secretStore)
+ hasContext = err == nil
+ }
+
+ if hasContext && includeRemoteVersion {
+ green := color.FgGreen.Render
+ fmt.Print(green("client: "))
+ }
+
+ console.Println(cobrautil.UsageVersion("zed", cobrautil.MustGetBool(cmd, "include-deps")))
+
+ if hasContext && includeRemoteVersion {
+ client, err := client.NewClient(cmd)
+ if err != nil {
+ return err
+ }
+
+ // NOTE: we ignore the error here, as it may be due to a schema not existing, or
+ // the client being unable to connect, etc. We just treat all such cases as an unknown
+ // version.
+ var headerMD metadata.MD
+ _, _ = client.ReadSchema(cmd.Context(), &v1.ReadSchemaRequest{}, grpc.Header(&headerMD))
+ version := headerMD.Get(string(responsemeta.ServerVersion))
+
+ blue := color.FgLightBlue.Render
+ fmt.Print(blue("service: "))
+ if len(version) == 1 {
+ console.Println(version[0])
+ } else {
+ console.Println("(unknown)")
+ }
+ }
+
+ return nil
+}