summaryrefslogtreecommitdiff
path: root/cmd/generate/forge_github.go
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2024-06-10 11:31:53 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2024-06-10 11:31:53 -0600
commit290354461422fff8c05ef9ce37ba154641e3f8fc (patch)
tree505e4faa4d6fba1e7d0b4addbda39a4e5beb26fd /cmd/generate/forge_github.go
parent81c8d44fba88dbb049c48363d6b7697224b98a2e (diff)
imworkingon: Fuss with forge precedence
Diffstat (limited to 'cmd/generate/forge_github.go')
-rw-r--r--cmd/generate/forge_github.go95
1 files changed, 18 insertions, 77 deletions
diff --git a/cmd/generate/forge_github.go b/cmd/generate/forge_github.go
index d29e3f7..9f475a3 100644
--- a/cmd/generate/forge_github.go
+++ b/cmd/generate/forge_github.go
@@ -7,10 +7,7 @@ import (
"time"
)
-var (
- reGitHubPR = regexp.MustCompile(`^https://github\.com/([^/?#]+)/([^/?#]+)/pull/([0-9]+)(?:\?[^#]*)?(?:#.*)?$`)
- reGitHubCommit = regexp.MustCompile(`^https://github\.com/([^/?#]+)/([^/?#]+)/commit/([0-9a-f]+)(?:\?[^#]*)?(?:#.*)?$`)
-)
+var reGitHubPR = regexp.MustCompile(`^https://github\.com/([^/?#]+)/([^/?#]+)/pull/([0-9]+)(?:\?[^#]*)?(?:#.*)?$`)
func githubPagination(i int) url.Values {
params := make(url.Values)
@@ -23,11 +20,15 @@ type GitHub struct{}
var _ Forge = GitHub{}
func (GitHub) FetchStatus(urls []string) (string, error) {
- // PR
for _, u := range urls {
+ if reGoogleGerritCL.MatchString(u) {
+ return "", nil
+ }
+ }
+ return fetchPerURLStatus(urls, func(u string) (string, error) {
m := reGitHubPR.FindStringSubmatch(u)
if m == nil {
- continue
+ return "", nil
}
user := m[1]
repo := m[2]
@@ -57,40 +58,14 @@ func (GitHub) FetchStatus(urls []string) (string, error) {
}
return ret, nil
- }
- // Commits from a non-PR
- var gitURL string
- var gitCommits []string
- for _, u := range urls {
- if m := reGitHubCommit.FindStringSubmatch(u); m != nil {
- user := m[1]
- repo := m[2]
- hash := m[3]
-
- gitURL = "https://github.com/" + user + "/" + repo
- gitCommits = append(gitCommits, hash)
- }
- }
- if len(gitCommits) > 0 {
- ret := statusMerged
- tag, err := getGitTagThatContainsAll(gitURL, gitCommits...)
- if err != nil {
- return "", err
- }
- if tag != "" {
- ret = fmt.Sprintf(statusReleasedFmt, tag)
- }
- return ret, nil
- }
- // Nope
- return "", nil
+ })
}
func (GitHub) FetchSubmittedAt(urls []string) (time.Time, error) {
- for _, u := range urls {
+ return fetchPerURLSubmittedAt(urls, func(u string) (time.Time, error) {
m := reGitHubPR.FindStringSubmatch(u)
if m == nil {
- continue
+ return time.Time{}, nil
}
user := m[1]
repo := m[2]
@@ -105,16 +80,19 @@ func (GitHub) FetchSubmittedAt(urls []string) (time.Time, error) {
return time.Time{}, err
}
return obj.CreatedAt, nil
- }
- return time.Time{}, nil
+ })
}
func (GitHub) FetchLastUpdated(urls []string) (time.Time, User, error) {
- // PR
for _, u := range urls {
+ if reGoogleGerritCL.MatchString(u) {
+ return time.Time{}, User{}, nil
+ }
+ }
+ return fetchPerURLLastUpdated(urls, func(u string) (time.Time, User, error) {
m := reGitHubPR.FindStringSubmatch(u)
if m == nil {
- continue
+ return time.Time{}, User{}, nil
}
user := m[1]
repo := m[2]
@@ -213,42 +191,5 @@ func (GitHub) FetchLastUpdated(urls []string) (time.Time, User, error) {
}
return retUpdatedAt, retUser, nil
- }
- // Commits from a non-PR
- {
- var ret time.Time
- for _, u := range urls {
- if m := reGitHubCommit.FindStringSubmatch(u); m != nil {
- user := m[1]
- repo := m[2]
- hash := m[3]
-
- urlStr := "https://api.github.com/repos/" + user + "/" + repo + "/commits/" + hash
- var obj struct {
- Commit struct {
- Author struct {
- Date time.Time `json:"date"`
- } `json:"author"`
- Committer struct {
- Date time.Time `json:"date"`
- } `json:"committer"`
- } `json:"commit"`
- }
- if err := httpGetJSON(urlStr, nil, &obj); err != nil {
- return time.Time{}, User{}, err
- }
- if obj.Commit.Author.Date.After(ret) {
- ret = obj.Commit.Author.Date
- }
- if obj.Commit.Committer.Date.After(ret) {
- ret = obj.Commit.Committer.Date
- }
- }
- }
- if ret.IsZero() {
- return time.Time{}, User{}, nil
- }
- }
- // Nope
- return time.Time{}, User{}, nil
+ })
}