func verCheck(version string) <-chan *latest.CheckResponse { verCheckCh := make(chan *latest.CheckResponse) go func() { fixFunc := latest.DeleteFrontV() githubTag := &latest.GithubTag{ Owner: "hico-horiuchi", Repository: "yosage", FixVersionStrFunc: fixFunc, } res, _ := latest.Check(githubTag, fixFunc(version)) verCheckCh <- res }() return verCheckCh }
func OutputVersion() string { var buf bytes.Buffer fmt.Fprintf(&buf, "%s version %s", Name, Version) if len(GitCommit) != 0 { fmt.Fprintf(&buf, " (%s)", GitCommit) } fmt.Fprintf(&buf, "\n") // Check latest version is release or not. verCheckCh := make(chan *latest.CheckResponse) go func() { fixFunc := latest.DeleteFrontV() githubTag := &latest.GithubTag{ Owner: "tcnksm", Repository: "ghr", FixVersionStrFunc: fixFunc, } res, err := latest.Check(githubTag, fixFunc(Version)) if err != nil { // Don't return error Debugf("[ERROR] Check lastet version is failed: %s", err) return } verCheckCh <- res }() select { case <-time.After(defaultCheckTimeout): case res := <-verCheckCh: if res.Outdated { fmt.Fprintf(&buf, "Latest version of ghr is %s, please upgrade!\n", res.Current) } } return buf.String() }