diff options
Diffstat (limited to 'vendor/github.com/authzed/spicedb/pkg/releases/cli.go')
| -rw-r--r-- | vendor/github.com/authzed/spicedb/pkg/releases/cli.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/vendor/github.com/authzed/spicedb/pkg/releases/cli.go b/vendor/github.com/authzed/spicedb/pkg/releases/cli.go new file mode 100644 index 0000000..df55171 --- /dev/null +++ b/vendor/github.com/authzed/spicedb/pkg/releases/cli.go @@ -0,0 +1,73 @@ +package releases + +import ( + "context" + "time" + + log "github.com/authzed/spicedb/internal/logging" + + "github.com/jzelinskie/cobrautil/v2" + "github.com/spf13/cobra" + flag "github.com/spf13/pflag" +) + +// RegisterFlags registers the flags for the CheckAndLogRunE function. +func RegisterFlags(flagset *flag.FlagSet) { + flagset.Bool("skip-release-check", false, "if true, skips checking for new SpiceDB releases") +} + +// CheckAndLogRunE is a run function that checks if the current version of SpiceDB is the latest +// and, if not, logs a warning. This check is disabled by setting --skip-release-check=false. +func CheckAndLogRunE() cobrautil.CobraRunFunc { + return func(cmd *cobra.Command, args []string) error { + skipReleaseCheck := cobrautil.MustGetBool(cmd, "skip-release-check") + if skipReleaseCheck { + return nil + } + + ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) + defer cancel() + + state, currentVersion, release, err := CheckIsLatestVersion(ctx, CurrentVersion, GetLatestRelease) + if err != nil { + log.Ctx(ctx).Warn().Str("this-version", currentVersion).Err(err).Msg("could not perform version checking; if this problem persists or to skip this check, add --skip-release-check=true") + return nil + } + + switch state { + case UnreleasedVersion: + log.Ctx(ctx).Warn().Str("version", currentVersion).Msg("not running a released version of SpiceDB") + return nil + + case UpdateAvailable: + if release == nil { + log.Ctx(ctx).Warn().Msg("unable to check for or load the new SpiceDB version") + return nil + } + + log.Ctx(ctx).Warn().Str("this-version", currentVersion).Str("latest-released-version", release.Version).Msgf("this version of SpiceDB is out of date. See: %s", release.ViewURL) + return nil + + case UpToDate: + if release == nil { + log.Ctx(ctx).Warn().Msg("unable to check for or load the new SpiceDB version") + return nil + } + + log.Ctx(ctx).Info().Str("latest-released-version", release.Version).Msg("this is the latest released version of SpiceDB") + return nil + + case Unknown: + if release == nil { + log.Ctx(ctx).Warn().Msg("unable to check for or load the new SpiceDB version") + return nil + } + + log.Ctx(ctx).Warn().Str("unknown-released-version", release.Version).Msg("unable to check for a new SpiceDB version") + return nil + + default: + panic("Unknown state for CheckAndLogRunE") + } + } +} |
