package updateprotocol import ( "regexp" "time" ) var releaseVersionPattern = regexp.MustCompile(`^v(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)$`) const ( PhaseIdle = "idle" PhaseQueued = "queued" PhasePulling = "pulling" PhaseRestarting = "restarting" PhaseVerifying = "verifying" PhaseComplete = "complete" PhaseFailed = "failed" ) type Request struct { Version string `json:"version"` RegistryUsername string `json:"registry_username"` RegistryToken string `json:"registry_token"` } type Status struct { Phase string `json:"phase"` TargetVersion string `json:"target_version,omitempty"` Message string `json:"message,omitempty"` StartedAt time.Time `json:"started_at,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` } func (s Status) Busy() bool { return s.Phase == PhaseQueued || s.Phase == PhasePulling || s.Phase == PhaseRestarting || s.Phase == PhaseVerifying } func ValidVersion(version string) bool { return len(version) <= 64 && releaseVersionPattern.MatchString(version) }