diff --git a/dependency_updater/dependency_updater.go b/dependency_updater/dependency_updater.go index 67c1263f4..015627891 100644 --- a/dependency_updater/dependency_updater.go +++ b/dependency_updater/dependency_updater.go @@ -18,11 +18,13 @@ import ( ) type Info struct { - Tag string `json:"tag"` + Tag string `json:"tag,omitempty"` Commit string `json:"commit"` TagPrefix string `json:"tagPrefix,omitempty"` - Owner string `json:"owner` - Repo string `json:"repo` + Owner string `json:"owner"` + Repo string `json:"repo"` + Branch string `json:"branch,omitempty"` + Tracking string `json:"tracking"` } type VersionUpdateInfo struct { @@ -149,7 +151,7 @@ func getAndUpdateDependency(ctx context.Context, client *github.Client, dependen if err != nil { return VersionUpdateInfo{}, err } - if updatedDependency != (VersionUpdateInfo{}) { + if updatedDependency != (VersionUpdateInfo{}) || dependencies[dependencyType].Tracking == "branch" { e := updateVersionTagAndCommit(commit, version, dependencyType, repoPath, dependencies) if e != nil { return VersionUpdateInfo{}, fmt.Errorf("error updating version tag and commit: %s", e) @@ -161,48 +163,49 @@ func getAndUpdateDependency(ctx context.Context, client *github.Client, dependen func getVersionAndCommit(ctx context.Context, client *github.Client, dependencies Dependencies, dependencyType string) (string, string, VersionUpdateInfo, error) { var version *github.RepositoryRelease - var err error + var commit string var diffUrl string var updatedDependency VersionUpdateInfo foundPrefixVersion := false options := &github.ListOptions{Page: 1} + if dependencies[dependencyType].Tracking == "tag" { + for { + releases, resp, err := client.Repositories.ListReleases( + ctx, + dependencies[dependencyType].Owner, + dependencies[dependencyType].Repo, + options) - for { - releases, resp, err := client.Repositories.ListReleases( - ctx, - dependencies[dependencyType].Owner, - dependencies[dependencyType].Repo, - options) - - if err != nil { - return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting releases: %s", err) - } - - if dependencies[dependencyType].TagPrefix == "" { - version = releases[0] - if *version.TagName != dependencies[dependencyType].Tag { - diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" + - dependencies[dependencyType].Tag + "..." + *version.TagName + if err != nil { + return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting releases: %s", err) } - break - } else if dependencies[dependencyType].TagPrefix != "" { - for release := range releases { - if strings.HasPrefix(*releases[release].TagName, dependencies[dependencyType].TagPrefix) { - version = releases[release] - foundPrefixVersion = true - if *version.TagName != dependencies[dependencyType].Tag { - diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" + - dependencies[dependencyType].Tag + "..." + *version.TagName + + if dependencies[dependencyType].TagPrefix == "" { + version = releases[0] + if *version.TagName != dependencies[dependencyType].Tag { + diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" + + dependencies[dependencyType].Tag + "..." + *version.TagName + } + break + } else if dependencies[dependencyType].TagPrefix != "" { + for release := range releases { + if strings.HasPrefix(*releases[release].TagName, dependencies[dependencyType].TagPrefix) { + version = releases[release] + foundPrefixVersion = true + if *version.TagName != dependencies[dependencyType].Tag { + diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" + + dependencies[dependencyType].Tag + "..." + *version.TagName + } + break } + } + if foundPrefixVersion { break } - } - if foundPrefixVersion { + options.Page = resp.NextPage + } else if resp.NextPage == 0 { break } - options.Page = resp.NextPage - } else if resp.NextPage == 0 { - break } } @@ -215,17 +218,38 @@ func getVersionAndCommit(ctx context.Context, client *github.Client, dependencie } } - commit, _, err := client.Repositories.GetCommit( + if dependencies[dependencyType].Tracking == "tag" { + versionCommit, _, err := client.Repositories.GetCommit( ctx, dependencies[dependencyType].Owner, dependencies[dependencyType].Repo, "refs/tags/"+*version.TagName, &github.ListOptions{}) - if err != nil { - return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting commit for "+dependencyType+": %s", err) + if err != nil { + return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting commit for "+dependencyType+": %s", err) + } + commit = *versionCommit.SHA + + } else if dependencies[dependencyType].Tracking == "branch" { + branchCommit, _, err := client.Repositories.ListCommits( + ctx, + dependencies[dependencyType].Owner, + dependencies[dependencyType].Repo, + &github.CommitsListOptions{ + SHA: dependencies[dependencyType].Branch, + }, + ) + if err != nil { + return "", "", VersionUpdateInfo{}, fmt.Errorf("error listing commits for "+dependencyType+": %s", err) + } + commit = *branchCommit[0].SHA } - return *version.TagName, *commit.SHA, updatedDependency, nil + if version != nil { + return *version.TagName, commit, updatedDependency, nil + } + + return "", commit, updatedDependency, nil } func updateVersionTagAndCommit( @@ -247,6 +271,7 @@ func updateVersionTagAndCommit( func writeToVersionsEnv(repoPath string, dependencies Dependencies) error { // formatting json updatedJson, err := json.MarshalIndent(dependencies, "", " ") + print(dependencies["base_reth_node"].Branch) if err != nil { return fmt.Errorf("error Marshaling dependencies json: %s", err) } @@ -295,4 +320,4 @@ func createVersionsEnv(repoPath string, dependencies Dependencies) error { func generateGithubRepoUrl(dependencies Dependencies, dependencyType string) string { return "https://github.com/" + dependencies[dependencyType].Owner + "/" + dependencies[dependencyType].Repo -} +} \ No newline at end of file diff --git a/versions.json b/versions.json index 86c6dd8f8..5911c7a38 100644 --- a/versions.json +++ b/versions.json @@ -2,32 +2,37 @@ "base_reth_node": { "tag": "v0.1.3", "commit": "f28c2751a0737d7617e52253a9e81070b87290b5", - "Owner": "base", - "Repo": "node-reth" + "owner": "base", + "repo": "node-reth", + "tracking": "tag" }, "nethermind": { "tag": "1.32.2", "commit": "d3e7eb98b28d0b9c7b58a9fb45e83b640b2e17e6", - "Owner": "NethermindEth", - "Repo": "nethermind" + "owner": "NethermindEth", + "repo": "nethermind", + "tracking": "tag" }, "op_geth": { "tag": "v1.101511.0", "commit": "68075997f33907401a93216aa426514c5ddc8870", - "Owner": "ethereum-optimism", - "Repo": "op-geth" + "owner": "ethereum-optimism", + "repo": "op-geth", + "tracking": "tag" }, "op_node": { "tag": "op-node/v1.13.4", "commit": "7eedfced77eb30ae72cc8d0e7c793dd2d1b6f161", "tagPrefix": "op-node", - "Owner": "ethereum-optimism", - "Repo": "optimism" + "owner": "ethereum-optimism", + "repo": "optimism", + "tracking": "tag" }, "op_reth": { "tag": "v1.5.0", "commit": "61e38f9af154fe91e776d8f5e449d20a1571e8cf", - "Owner": "paradigmxyz", - "Repo": "reth" + "owner": "paradigmxyz", + "repo": "reth", + "tracking": "tag" } } \ No newline at end of file