func (updater *Updater) latestReleaseNameAndVersion() (name, version string) { // Create Client with a stub Credentials c := github.Client{Credentials: &github.Credentials{Host: updater.Host}} name, _ = c.GhLatestTagName() version = strings.TrimPrefix(name, "v") return }
func uploadReleaseAssets(gh *github.Client, release *octokit.Release, assetsDir string) { var wg sync.WaitGroup var totalAssets, countAssets uint64 filepath.Walk(assetsDir, func(path string, fi os.FileInfo, err error) error { if !fi.IsDir() { totalAssets += 1 } return nil }) printUploadProgress(&countAssets, totalAssets) filepath.Walk(assetsDir, func(path string, fi os.FileInfo, err error) error { if !fi.IsDir() { wg.Add(1) go func() { defer func() { atomic.AddUint64(&countAssets, uint64(1)) printUploadProgress(&countAssets, totalAssets) wg.Done() }() uploadUrl, err := release.UploadURL.Expand(octokit.M{"name": fi.Name()}) utils.Check(err) contentType := detectContentType(path, fi) file, err := os.Open(path) utils.Check(err) defer file.Close() err = gh.UploadReleaseAsset(uploadUrl, file, contentType) utils.Check(err) }() } return nil }) wg.Wait() }