@@ -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