Skip to content

Commit 6fe8b97

Browse files
committed
fix: nightly handling
1 parent 649cb5a commit 6fe8b97

File tree

1 file changed

+73
-62
lines changed

1 file changed

+73
-62
lines changed

metascoop/main.go

Lines changed: 73 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -104,74 +104,76 @@ func main() {
104104

105105
log.Printf("Received %d releases", len(releases))
106106

107-
for _, release := range releases {
108-
fmt.Printf("::group::Release %s\n", release.GetTagName())
109-
func() {
110-
defer fmt.Println("::endgroup::")
111-
112-
if release.GetPrerelease() {
113-
log.Printf("Skipping prerelease %q", release.GetTagName())
114-
return
115-
}
116-
if release.GetDraft() {
117-
log.Printf("Skipping draft %q", release.GetTagName())
118-
return
119-
}
120-
if release.GetTagName() == "" {
121-
log.Printf("Skipping release with empty tag name")
122-
return
123-
}
107+
if !app.Nightly {
108+
for _, release := range releases {
109+
fmt.Printf("::group::Release %s\n", release.GetTagName())
110+
func() {
111+
defer fmt.Println("::endgroup::")
124112

125-
log.Printf("Working on release with tag name %q", release.GetTagName())
113+
if release.GetPrerelease() {
114+
log.Printf("Skipping prerelease %q", release.GetTagName())
115+
return
116+
}
117+
if release.GetDraft() {
118+
log.Printf("Skipping draft %q", release.GetTagName())
119+
return
120+
}
121+
if release.GetTagName() == "" {
122+
log.Printf("Skipping release with empty tag name")
123+
return
124+
}
126125

127-
apk := apps.FindAPKRelease(release)
128-
if apk == nil {
129-
log.Printf("Couldn't find a release asset with extension \".apk\"")
130-
return
131-
}
126+
log.Printf("Working on release with tag name %q", release.GetTagName())
127+
128+
apk := apps.FindAPKRelease(release)
129+
if apk == nil {
130+
log.Printf("Couldn't find a release asset with extension \".apk\"")
131+
return
132+
}
132133

133-
appName := apps.GenerateReleaseFilename(app.Name(), release.GetTagName())
134+
appName := apps.GenerateReleaseFilename(app.Name(), release.GetTagName())
134135

135-
log.Printf("Target APK name: %s", appName)
136+
log.Printf("Target APK name: %s", appName)
136137

137-
appClone := app
138+
appClone := app
138139

139-
appClone.ReleaseDescription = release.GetBody()
140-
if appClone.ReleaseDescription != "" {
141-
log.Printf("Release notes: %s", appClone.ReleaseDescription)
142-
}
140+
appClone.ReleaseDescription = release.GetBody()
141+
if appClone.ReleaseDescription != "" {
142+
log.Printf("Release notes: %s", appClone.ReleaseDescription)
143+
}
143144

144-
apkInfoMap[appName] = appClone
145+
apkInfoMap[appName] = appClone
145146

146-
appTargetPath := filepath.Join(*repoDir, appName)
147+
appTargetPath := filepath.Join(*repoDir, appName)
147148

148-
// If the app file already exists for this version, we continue
149-
if _, err := os.Stat(appTargetPath); !errors.Is(err, os.ErrNotExist) {
150-
log.Printf("Already have APK for version %q at %q", release.GetTagName(), appTargetPath)
151-
return
152-
}
149+
// If the app file already exists for this version, we continue
150+
if _, err := os.Stat(appTargetPath); !errors.Is(err, os.ErrNotExist) {
151+
log.Printf("Already have APK for version %q at %q", release.GetTagName(), appTargetPath)
152+
return
153+
}
153154

154-
log.Printf("Downloading APK %q from release %q to %q", apk.GetName(), release.GetTagName(), appTargetPath)
155+
log.Printf("Downloading APK %q from release %q to %q", apk.GetName(), release.GetTagName(), appTargetPath)
155156

156-
dlCtx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
157-
defer cancel()
157+
dlCtx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
158+
defer cancel()
158159

159-
appStream, _, err := githubClient.Repositories.DownloadReleaseAsset(dlCtx, repo.Author, repo.Name, apk.GetID(), http.DefaultClient)
160-
if err != nil {
161-
log.Printf("Error while downloading app %q (artifact id %d) from from release %q: %s", app.GitURL, apk.GetID(), release.GetTagName(), err.Error())
162-
haveError = true
163-
return
164-
}
160+
appStream, _, err := githubClient.Repositories.DownloadReleaseAsset(dlCtx, repo.Author, repo.Name, apk.GetID(), http.DefaultClient)
161+
if err != nil {
162+
log.Printf("Error while downloading app %q (artifact id %d) from from release %q: %s", app.GitURL, apk.GetID(), release.GetTagName(), err.Error())
163+
haveError = true
164+
return
165+
}
165166

166-
err = downloadStream(appTargetPath, appStream)
167-
if err != nil {
168-
log.Printf("Error while downloading app %q (artifact id %d) from from release %q to %q: %s", app.GitURL, *apk.ID, *release.TagName, appTargetPath, err.Error())
169-
haveError = true
170-
return
171-
}
167+
err = downloadStream(appTargetPath, appStream)
168+
if err != nil {
169+
log.Printf("Error while downloading app %q (artifact id %d) from from release %q to %q: %s", app.GitURL, *apk.ID, *release.TagName, appTargetPath, err.Error())
170+
haveError = true
171+
return
172+
}
172173

173-
log.Printf("Successfully downloaded app for version %q", release.GetTagName())
174-
}()
174+
log.Printf("Successfully downloaded app for version %q", release.GetTagName())
175+
}()
176+
}
175177
}
176178

177179
// Handle nightly if enabled
@@ -215,10 +217,15 @@ func main() {
215217

216218
appTargetPath := filepath.Join(*repoDir, appName)
217219

218-
// If the app file already exists for this version, we continue
219-
if _, err := os.Stat(appTargetPath); !errors.Is(err, os.ErrNotExist) {
220-
log.Printf("Already have APK for nightly version %q at %q", latestPre.GetTagName(), appTargetPath)
221-
return
220+
// For nightly, always replace if exists
221+
if _, err := os.Stat(appTargetPath); err == nil {
222+
log.Printf("Deleting existing nightly APK at %q to replace with updated", appTargetPath)
223+
err := os.Remove(appTargetPath)
224+
if err != nil {
225+
log.Printf("Error deleting existing %s: %s", appTargetPath, err.Error())
226+
haveError = true
227+
return
228+
}
222229
}
223230

224231
log.Printf("Downloading APK %q from nightly release %q to %q", apk.GetName(), latestPre.GetTagName(), appTargetPath)
@@ -247,9 +254,13 @@ func main() {
247254
}
248255
}
249256

250-
// Cleanup old APKs if keep_count > 0
251-
if app.KeepCount > 0 {
252-
log.Printf("Cleaning up old APKs, keeping latest %d", app.KeepCount)
257+
// Cleanup old APKs if keep_count > 0 or if nightly (force keep 1)
258+
effectiveKeep := int(app.KeepCount)
259+
if app.Nightly {
260+
effectiveKeep = 1
261+
}
262+
if effectiveKeep > 0 {
263+
log.Printf("Cleaning up old APKs, keeping latest %d", effectiveKeep)
253264

254265
// Map tag to published date
255266
tagToDate := make(map[string]time.Time)
@@ -303,7 +314,7 @@ func main() {
303314
})
304315

305316
// Delete excess
306-
for i := int(app.KeepCount); i < len(apkList); i++ {
317+
for i := effectiveKeep; i < len(apkList); i++ {
307318
delPath := filepath.Join(*repoDir, apkList[i].file)
308319
log.Printf("Deleting old APK: %s", delPath)
309320
err := os.Remove(delPath)

0 commit comments

Comments
 (0)