func ValidateClient(client concourse.Client, targetName TargetName) error { info, err := client.GetInfo() if err != nil { return err } if info.Version == version.Version || version.IsDev(version.Version) { return nil } atcMajor, atcMinor, atcPatch, err := version.GetSemver(info.Version) if err != nil { return err } flyMajor, flyMinor, flyPatch, err := version.GetSemver(version.Version) if err != nil { return err } if ((atcMajor == flyMajor) && (atcMinor != flyMinor)) || (atcMajor != flyMajor) { return NewErrVersionMismatch(version.Version, info.Version, targetName) } if (atcMajor == flyMajor) && (atcMinor == flyMinor) && (atcPatch != flyPatch) { fmt.Fprintln(os.Stderr, ui.WarningColor("WARNING:\n")) fmt.Fprintln(os.Stderr, ui.WarningColor(NewErrVersionMismatch(version.Version, info.Version, targetName).Error())) } return nil }
func main() { parser := flags.NewParser(&commands.Fly, flags.HelpFlag|flags.PassDoubleDash) parser.NamespaceDelimiter = "-" _, err := parser.Parse() if err != nil { if err == concourse.ErrUnauthorized { fmt.Fprintln(os.Stderr, "not authorized. run the following to log in:") fmt.Fprintln(os.Stderr, "") fmt.Fprintln(os.Stderr, " "+ui.Embolden("fly -t %s login", commands.Fly.Target)) fmt.Fprintln(os.Stderr, "") } else if err == rc.ErrNoTargetSpecified { fmt.Fprintln(os.Stderr, "no target specified. specify the target with "+ui.Embolden("-t")+" or log in like so:") fmt.Fprintln(os.Stderr, "") fmt.Fprintln(os.Stderr, " "+ui.Embolden("fly -t (alias) login -c (concourse url)")) fmt.Fprintln(os.Stderr, "") } else if versionErr, ok := err.(rc.ErrVersionMismatch); ok { fmt.Fprintln(os.Stderr, versionErr.Error()) fmt.Fprintln(os.Stderr, ui.WarningColor("cowardly refusing to run due to significant version discrepancy")) } else if netErr, ok := err.(net.Error); ok { fmt.Fprintf(os.Stderr, "could not reach the Concourse server called %s:\n", ui.Embolden("%s", commands.Fly.Target)) fmt.Fprintln(os.Stderr, "") fmt.Fprintln(os.Stderr, " "+ui.Embolden("%s", netErr)) fmt.Fprintln(os.Stderr, "") fmt.Fprintln(os.Stderr, "is the targeted Concourse running? better go catch it lol") } else { fmt.Fprintf(os.Stderr, "error: %s\n", err) } os.Exit(1) } }