Skip to content

Commit c8dad78

Browse files
committed
fixed long release names colliding with release dates in verbose downloads
1 parent 1433c52 commit c8dad78

2 files changed

Lines changed: 29 additions & 11 deletions

File tree

commands/downloads.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import (
99
)
1010

1111
type release struct {
12-
Name string `json:"name"`
13-
PublishedAt string `json:"published_at"`
14-
Assets []struct {
12+
Name string `json:"name"`
13+
PublishedAt string `json:"published_at"`
14+
TotalDownloads int
15+
Assets []struct {
1516
Downloads int `json:"download_count"`
1617
} `json:"assets"`
1718
}
@@ -23,6 +24,9 @@ func HandleDownloadsCommand(user string, repo string, verbose bool) {
2324
releaseCount := 0
2425
page := 1
2526

27+
releases := make([]release, 0)
28+
longestName := 0
29+
2630
for {
2731
resp, err := utils.Get(fmt.Sprintf("%s%d", baseUrl, page))
2832
if err != nil {
@@ -52,19 +56,20 @@ func HandleDownloadsCommand(user string, repo string, verbose bool) {
5256
for _, asset := range release.Assets {
5357
releaseAssetDownloads += asset.Downloads
5458
}
59+
5560
if verbose {
56-
publishedAt, err := utils.RFC3339StrToPrettyStr(release.PublishedAt)
57-
if err != nil {
58-
fmt.Println(err)
59-
return
61+
if len(release.Name) > longestName {
62+
longestName = len(release.Name)
6063
}
61-
fmt.Printf("%s%-10d%s%-20s%s\n", ansi.Bold, releaseAssetDownloads, ansi.Reset, release.Name, publishedAt)
64+
65+
release.TotalDownloads = releaseAssetDownloads
66+
releases = append(releases, release)
6267
}
68+
6369
downloadCount += releaseAssetDownloads
6470
}
6571

6672
releaseCount += len(releaseList)
67-
6873
page++
6974
}
7075

@@ -73,5 +78,18 @@ func HandleDownloadsCommand(user string, repo string, verbose bool) {
7378
return
7479
}
7580

81+
if verbose {
82+
for _, release := range releases {
83+
publishedAt, err := utils.RFC3339StrToPrettyStr(release.PublishedAt)
84+
85+
if err != nil {
86+
fmt.Println(err)
87+
continue
88+
}
89+
90+
fmt.Printf("%s%-10d%s%-*s%s\n", ansi.Bold, release.TotalDownloads, ansi.Reset, longestName+5, release.Name, publishedAt)
91+
}
92+
}
93+
7694
fmt.Printf("%s/%s has %s%d%s downloads, across %s%d%s releases\n", user, repo, ansi.Bold, downloadCount, ansi.Reset, ansi.Bold, releaseCount, ansi.Reset)
7795
}

utils/cli.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ func (fs *FlagSet) AddBoolFlag(name string, defaultvalue bool) {
2929

3030
func (fs *FlagSet) Parse(args []string) {
3131
for _, arg := range args {
32-
if strings.HasPrefix(arg, "--") {
33-
name := strings.TrimPrefix(arg, "--")
32+
if after, ok := strings.CutPrefix(arg, "--"); ok {
33+
name := after
3434
if flag, exists := fs.boolflags[name]; exists {
3535
flag.found = true
3636
}

0 commit comments

Comments
 (0)