add more information to Release struct

- asset's size
- release name
- release time
This commit is contained in:
rhysd 2017-12-31 17:30:54 +09:00
parent a685f32589
commit f6766d9880
3 changed files with 34 additions and 3 deletions

View File

@ -112,10 +112,14 @@ func (d *ReleaseDetector) DetectLatest(slug string) (release *Release, found boo
tag = tag[indices[0]:]
}
publishedAt := rel.GetPublishedAt().Time
release = &Release{
AssetURL: url,
URL: rel.GetHTMLURL(),
ReleaseNotes: rel.GetBody(),
AssetURL: url,
AssetByteSize: asset.GetSize(),
URL: rel.GetHTMLURL(),
ReleaseNotes: rel.GetBody(),
Name: rel.GetName(),
PublishedAt: &publishedAt,
}
release.Version, err = semver.Make(tag)

View File

@ -39,6 +39,15 @@ func TestDetectReleaseWithVersionPrefix(t *testing.T) {
if r.ReleaseNotes == "" {
t.Error("Description should not be empty for this repo")
}
if r.Name == "" {
t.Error("Release name is unexpectedly empty")
}
if r.AssetByteSize == 0 {
t.Error("Asset's size is unexpectedly zero")
}
if r.PublishedAt.IsZero() {
t.Error("Release time is unexpectedly zero")
}
}
func TestDetectReleasesForVariousArchives(t *testing.T) {
@ -46,6 +55,8 @@ func TestDetectReleasesForVariousArchives(t *testing.T) {
"rhysd-test/test-release-zip",
"rhysd-test/test-release-tar",
"rhysd-test/test-release-gzip",
"rhysd-test/test-release-xz",
"rhysd-test/test-release-tar-xz",
} {
t.Run(repo, func(t *testing.T) {
r, ok, err := DetectLatest(repo)
@ -71,6 +82,15 @@ func TestDetectReleasesForVariousArchives(t *testing.T) {
if !strings.HasPrefix(r.AssetURL, fmt.Sprintf("https://github.com/%s/releases/download/v1.2.3/", repo)) {
t.Error("Unexpected asset URL:", r.AssetURL)
}
if r.Name == "" {
t.Error("Release name is unexpectedly empty")
}
if r.AssetByteSize == 0 {
t.Error("Asset's size is unexpectedly zero")
}
if r.PublishedAt.IsZero() {
t.Error("Release time is unexpectedly zero")
}
})
}
}

View File

@ -2,6 +2,7 @@ package selfupdate
import (
"github.com/blang/semver"
"time"
)
// Release represents a release asset for current OS and arch.
@ -10,8 +11,14 @@ type Release struct {
Version semver.Version
// AssetURL is a URL to the uploaded file for the release
AssetURL string
// AssetSize represents the size of asset in bytes
AssetByteSize int
// URL is a URL to release page for browsing
URL string
// ReleaseNotes is a release notes of the release
ReleaseNotes string
// Name represents a name of the release
Name string
// PublishedAt is the time when the release was published
PublishedAt *time.Time
}