@@ -11,6 +11,7 @@ import (
1111 "github.com/OpenListTeam/OpenList/v4/internal/errs"
1212 "github.com/OpenListTeam/OpenList/v4/internal/model"
1313 "github.com/OpenListTeam/OpenList/v4/pkg/utils"
14+ log "github.com/sirupsen/logrus"
1415)
1516
1617type GithubReleases struct {
@@ -45,12 +46,25 @@ func (d *GithubReleases) List(ctx context.Context, dir model.Obj, args model.Lis
4546 point := & d .points [i ]
4647
4748 if ! d .Addition .ShowAllVersion { // latest
48- point .RequestRelease (d .GetRequest , args .Refresh )
49+ err := point .RequestRelease (d .GetRequest , args .Refresh )
50+ if err != nil {
51+ log .Warnf ("failed to request release for %s: %v" , point .Repo , err )
52+ }
4953
5054 if point .Point == path { // 与仓库路径相同
55+ if point .Release == nil {
56+ if err != nil {
57+ return nil , fmt .Errorf ("failed to get release for %s: %w" , point .Repo , err )
58+ }
59+ return nil , fmt .Errorf ("failed to get release for %s: unknown error" , point .Repo )
60+ }
5161 files = append (files , point .GetLatestRelease ()... )
5262 if d .Addition .ShowReadme {
53- files = append (files , point .GetOtherFile (d .GetRequest , args .Refresh )... )
63+ otherFiles , err := point .GetOtherFile (d .GetRequest , args .Refresh )
64+ if err != nil {
65+ return nil , fmt .Errorf ("failed to get other files for %s: %w" , point .Repo , err )
66+ }
67+ files = append (files , otherFiles ... )
5468 }
5569 if d .Addition .ShowSourceCode {
5670 files = append (files , point .GetSourceCode ()... )
@@ -60,6 +74,9 @@ func (d *GithubReleases) List(ctx context.Context, dir model.Obj, args model.Lis
6074 if nextDir == "" {
6175 continue
6276 }
77+ if err != nil {
78+ return nil , fmt .Errorf ("failed to get release for %s: %w" , point .Repo , err )
79+ }
6380
6481 hasSameDir := false
6582 for index := range files {
@@ -70,30 +87,51 @@ func (d *GithubReleases) List(ctx context.Context, dir model.Obj, args model.Lis
7087 }
7188 }
7289 if ! hasSameDir {
90+ var updateAt , createAt string
91+ if point .Release != nil {
92+ updateAt = point .Release .PublishedAt
93+ createAt = point .Release .CreatedAt
94+ }
7395 files = append (files , File {
7496 Path : stdpath .Join (path , nextDir ),
7597 FileName : nextDir ,
7698 Size : point .GetLatestSize (),
77- UpdateAt : point . Release . PublishedAt ,
78- CreateAt : point . Release . CreatedAt ,
99+ UpdateAt : updateAt ,
100+ CreateAt : createAt ,
79101 Type : "dir" ,
80102 Url : "" ,
81103 })
82104 }
83105 }
84106 } else { // all version
85- point .RequestReleases (d .GetRequest , args .Refresh )
107+ err := point .RequestReleases (d .GetRequest , args .Refresh )
108+ if err != nil {
109+ log .Warnf ("failed to request releases for %s: %v" , point .Repo , err )
110+ }
86111
87112 if point .Point == path { // 与仓库路径相同
113+ if point .Releases == nil {
114+ if err != nil {
115+ return nil , fmt .Errorf ("failed to get releases for %s: %w" , point .Repo , err )
116+ }
117+ return nil , fmt .Errorf ("failed to get releases for %s: unknown error" , point .Repo )
118+ }
88119 files = append (files , point .GetAllVersion ()... )
89120 if d .Addition .ShowReadme {
90- files = append (files , point .GetOtherFile (d .GetRequest , args .Refresh )... )
121+ otherFiles , err := point .GetOtherFile (d .GetRequest , args .Refresh )
122+ if err != nil {
123+ return nil , fmt .Errorf ("failed to get other files for %s: %w" , point .Repo , err )
124+ }
125+ files = append (files , otherFiles ... )
91126 }
92127 } else if strings .HasPrefix (point .Point , path ) { // 仓库目录的父目录
93128 nextDir := GetNextDir (point .Point , path )
94129 if nextDir == "" {
95130 continue
96131 }
132+ if err != nil {
133+ return nil , fmt .Errorf ("failed to get releases for %s: %w" , point .Repo , err )
134+ }
97135
98136 hasSameDir := false
99137 for index := range files {
@@ -104,12 +142,17 @@ func (d *GithubReleases) List(ctx context.Context, dir model.Obj, args model.Lis
104142 }
105143 }
106144 if ! hasSameDir {
145+ var updateAt , createAt string
146+ if point .Releases != nil && len (* point .Releases ) > 0 {
147+ updateAt = (* point .Releases )[0 ].PublishedAt
148+ createAt = (* point .Releases )[0 ].CreatedAt
149+ }
107150 files = append (files , File {
108151 FileName : nextDir ,
109152 Path : stdpath .Join (path , nextDir ),
110153 Size : point .GetAllVersionSize (),
111- UpdateAt : ( * point . Releases )[ 0 ]. PublishedAt ,
112- CreateAt : ( * point . Releases )[ 0 ]. CreatedAt ,
154+ UpdateAt : updateAt ,
155+ CreateAt : createAt ,
113156 Type : "dir" ,
114157 Url : "" ,
115158 })
@@ -119,6 +162,12 @@ func (d *GithubReleases) List(ctx context.Context, dir model.Obj, args model.Lis
119162 if tagName == "" {
120163 continue
121164 }
165+ if point .Releases == nil {
166+ if err != nil {
167+ return nil , fmt .Errorf ("failed to get releases for %s: %w" , point .Repo , err )
168+ }
169+ return nil , fmt .Errorf ("failed to get releases for %s: unknown error" , point .Repo )
170+ }
122171
123172 files = append (files , point .GetReleaseByTagName (tagName )... )
124173
0 commit comments