diff --git a/release.go b/release.go index 37de353..a8be5a3 100644 --- a/release.go +++ b/release.go @@ -8,11 +8,13 @@ import ( // Release of a repository tagged via GitHub. type Release struct { - ID string - Name string - Description string - URL url.URL - PublishedAt time.Time + ID string + Name string + Description string + URL url.URL + PublishedAt time.Time + IsDraft bool + IsPrerelease bool } // IsReleaseCandidate returns true if the release name hints at an RC release. @@ -25,7 +27,12 @@ func (r Release) IsBeta() bool { return strings.Contains(strings.ToLower(r.Name), "beta") } +// IsDevelopment returns true if the release name hints at a development version release. +func (r Release) IsDevelopment() bool { + return strings.Contains(strings.ToLower(r.Name), "dev") +} + // IsNonstable returns true if one of the non-stable release-checking functions return true. func (r Release) IsNonstable() bool { - return r.IsReleaseCandidate() || r.IsBeta() + return r.IsReleaseCandidate() || r.IsBeta() || r.IsDevelopment() || r.IsDraft || r.IsPrerelease } diff --git a/releasechecker.go b/releasechecker.go index e22ef65..d8174d9 100644 --- a/releasechecker.go +++ b/releasechecker.go @@ -82,11 +82,13 @@ func (c *Checker) query(owner, name string) (Repository, error) { Releases struct { Edges []struct { Node struct { - ID githubql.ID - Name githubql.String - Description githubql.String - URL githubql.URI - PublishedAt githubql.DateTime + ID githubql.ID + Name githubql.String + Description githubql.String + URL githubql.URI + PublishedAt githubql.DateTime + IsDraft githubql.Boolean + IsPrerelease githubql.Boolean } } } `graphql:"releases(last: 1)"` @@ -127,11 +129,13 @@ func (c *Checker) query(owner, name string) (Repository, error) { URL: *query.Repository.URL.URL, Release: Release{ - ID: releaseID, - Name: string(latestRelease.Name), - Description: string(latestRelease.Description), - URL: *latestRelease.URL.URL, - PublishedAt: latestRelease.PublishedAt.Time, + ID: releaseID, + Name: string(latestRelease.Name), + Description: string(latestRelease.Description), + URL: *latestRelease.URL.URL, + PublishedAt: latestRelease.PublishedAt.Time, + IsDraft: bool(latestRelease.IsDraft), + IsPrerelease: bool(latestRelease.IsPrerelease), }, }, nil }