Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 65 additions & 40 deletions dependency_updater/dependency_updater.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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)
Expand All @@ -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
}
}

Expand All @@ -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(
Expand All @@ -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)
}
Expand Down Expand Up @@ -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
}
}
25 changes: 15 additions & 10 deletions versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}