Skip to content

Commit 56890f3

Browse files
authored
Dependency Updater: Add Support for Branch Tracking (base#495)
* add support for tracking branch * remove comment and fix formatting * test build
1 parent e3e0ae3 commit 56890f3

2 files changed

Lines changed: 80 additions & 50 deletions

File tree

dependency_updater/dependency_updater.go

Lines changed: 65 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ import (
1818
)
1919

2020
type Info struct {
21-
Tag string `json:"tag"`
21+
Tag string `json:"tag,omitempty"`
2222
Commit string `json:"commit"`
2323
TagPrefix string `json:"tagPrefix,omitempty"`
24-
Owner string `json:"owner`
25-
Repo string `json:"repo`
24+
Owner string `json:"owner"`
25+
Repo string `json:"repo"`
26+
Branch string `json:"branch,omitempty"`
27+
Tracking string `json:"tracking"`
2628
}
2729

2830
type VersionUpdateInfo struct {
@@ -149,7 +151,7 @@ func getAndUpdateDependency(ctx context.Context, client *github.Client, dependen
149151
if err != nil {
150152
return VersionUpdateInfo{}, err
151153
}
152-
if updatedDependency != (VersionUpdateInfo{}) {
154+
if updatedDependency != (VersionUpdateInfo{}) || dependencies[dependencyType].Tracking == "branch" {
153155
e := updateVersionTagAndCommit(commit, version, dependencyType, repoPath, dependencies)
154156
if e != nil {
155157
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
161163

162164
func getVersionAndCommit(ctx context.Context, client *github.Client, dependencies Dependencies, dependencyType string) (string, string, VersionUpdateInfo, error) {
163165
var version *github.RepositoryRelease
164-
var err error
166+
var commit string
165167
var diffUrl string
166168
var updatedDependency VersionUpdateInfo
167169
foundPrefixVersion := false
168170
options := &github.ListOptions{Page: 1}
171+
if dependencies[dependencyType].Tracking == "tag" {
172+
for {
173+
releases, resp, err := client.Repositories.ListReleases(
174+
ctx,
175+
dependencies[dependencyType].Owner,
176+
dependencies[dependencyType].Repo,
177+
options)
169178

170-
for {
171-
releases, resp, err := client.Repositories.ListReleases(
172-
ctx,
173-
dependencies[dependencyType].Owner,
174-
dependencies[dependencyType].Repo,
175-
options)
176-
177-
if err != nil {
178-
return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting releases: %s", err)
179-
}
180-
181-
if dependencies[dependencyType].TagPrefix == "" {
182-
version = releases[0]
183-
if *version.TagName != dependencies[dependencyType].Tag {
184-
diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" +
185-
dependencies[dependencyType].Tag + "..." + *version.TagName
179+
if err != nil {
180+
return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting releases: %s", err)
186181
}
187-
break
188-
} else if dependencies[dependencyType].TagPrefix != "" {
189-
for release := range releases {
190-
if strings.HasPrefix(*releases[release].TagName, dependencies[dependencyType].TagPrefix) {
191-
version = releases[release]
192-
foundPrefixVersion = true
193-
if *version.TagName != dependencies[dependencyType].Tag {
194-
diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" +
195-
dependencies[dependencyType].Tag + "..." + *version.TagName
182+
183+
if dependencies[dependencyType].TagPrefix == "" {
184+
version = releases[0]
185+
if *version.TagName != dependencies[dependencyType].Tag {
186+
diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" +
187+
dependencies[dependencyType].Tag + "..." + *version.TagName
188+
}
189+
break
190+
} else if dependencies[dependencyType].TagPrefix != "" {
191+
for release := range releases {
192+
if strings.HasPrefix(*releases[release].TagName, dependencies[dependencyType].TagPrefix) {
193+
version = releases[release]
194+
foundPrefixVersion = true
195+
if *version.TagName != dependencies[dependencyType].Tag {
196+
diffUrl = generateGithubRepoUrl(dependencies, dependencyType) + "/compare/" +
197+
dependencies[dependencyType].Tag + "..." + *version.TagName
198+
}
199+
break
196200
}
201+
}
202+
if foundPrefixVersion {
197203
break
198204
}
199-
}
200-
if foundPrefixVersion {
205+
options.Page = resp.NextPage
206+
} else if resp.NextPage == 0 {
201207
break
202208
}
203-
options.Page = resp.NextPage
204-
} else if resp.NextPage == 0 {
205-
break
206209
}
207210
}
208211

@@ -215,17 +218,38 @@ func getVersionAndCommit(ctx context.Context, client *github.Client, dependencie
215218
}
216219
}
217220

218-
commit, _, err := client.Repositories.GetCommit(
221+
if dependencies[dependencyType].Tracking == "tag" {
222+
versionCommit, _, err := client.Repositories.GetCommit(
219223
ctx,
220224
dependencies[dependencyType].Owner,
221225
dependencies[dependencyType].Repo,
222226
"refs/tags/"+*version.TagName,
223227
&github.ListOptions{})
224-
if err != nil {
225-
return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting commit for "+dependencyType+": %s", err)
228+
if err != nil {
229+
return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting commit for "+dependencyType+": %s", err)
230+
}
231+
commit = *versionCommit.SHA
232+
233+
} else if dependencies[dependencyType].Tracking == "branch" {
234+
branchCommit, _, err := client.Repositories.ListCommits(
235+
ctx,
236+
dependencies[dependencyType].Owner,
237+
dependencies[dependencyType].Repo,
238+
&github.CommitsListOptions{
239+
SHA: dependencies[dependencyType].Branch,
240+
},
241+
)
242+
if err != nil {
243+
return "", "", VersionUpdateInfo{}, fmt.Errorf("error listing commits for "+dependencyType+": %s", err)
244+
}
245+
commit = *branchCommit[0].SHA
226246
}
227247

228-
return *version.TagName, *commit.SHA, updatedDependency, nil
248+
if version != nil {
249+
return *version.TagName, commit, updatedDependency, nil
250+
}
251+
252+
return "", commit, updatedDependency, nil
229253
}
230254

231255
func updateVersionTagAndCommit(
@@ -247,6 +271,7 @@ func updateVersionTagAndCommit(
247271
func writeToVersionsEnv(repoPath string, dependencies Dependencies) error {
248272
// formatting json
249273
updatedJson, err := json.MarshalIndent(dependencies, "", " ")
274+
print(dependencies["base_reth_node"].Branch)
250275
if err != nil {
251276
return fmt.Errorf("error Marshaling dependencies json: %s", err)
252277
}
@@ -295,4 +320,4 @@ func createVersionsEnv(repoPath string, dependencies Dependencies) error {
295320

296321
func generateGithubRepoUrl(dependencies Dependencies, dependencyType string) string {
297322
return "https://github.com/" + dependencies[dependencyType].Owner + "/" + dependencies[dependencyType].Repo
298-
}
323+
}

versions.json

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,37 @@
22
"base_reth_node": {
33
"tag": "v0.1.3",
44
"commit": "f28c2751a0737d7617e52253a9e81070b87290b5",
5-
"Owner": "base",
6-
"Repo": "node-reth"
5+
"owner": "base",
6+
"repo": "node-reth",
7+
"tracking": "tag"
78
},
89
"nethermind": {
910
"tag": "1.32.2",
1011
"commit": "d3e7eb98b28d0b9c7b58a9fb45e83b640b2e17e6",
11-
"Owner": "NethermindEth",
12-
"Repo": "nethermind"
12+
"owner": "NethermindEth",
13+
"repo": "nethermind",
14+
"tracking": "tag"
1315
},
1416
"op_geth": {
1517
"tag": "v1.101511.0",
1618
"commit": "68075997f33907401a93216aa426514c5ddc8870",
17-
"Owner": "ethereum-optimism",
18-
"Repo": "op-geth"
19+
"owner": "ethereum-optimism",
20+
"repo": "op-geth",
21+
"tracking": "tag"
1922
},
2023
"op_node": {
2124
"tag": "op-node/v1.13.4",
2225
"commit": "7eedfced77eb30ae72cc8d0e7c793dd2d1b6f161",
2326
"tagPrefix": "op-node",
24-
"Owner": "ethereum-optimism",
25-
"Repo": "optimism"
27+
"owner": "ethereum-optimism",
28+
"repo": "optimism",
29+
"tracking": "tag"
2630
},
2731
"op_reth": {
2832
"tag": "v1.5.0",
2933
"commit": "61e38f9af154fe91e776d8f5e449d20a1571e8cf",
30-
"Owner": "paradigmxyz",
31-
"Repo": "reth"
34+
"owner": "paradigmxyz",
35+
"repo": "reth",
36+
"tracking": "tag"
3237
}
3338
}

0 commit comments

Comments
 (0)