@@ -14,13 +14,16 @@ type PackageListResponse struct {
1414 PackageNames []string `json:"packageNames"`
1515}
1616
17+ type PackageVersion struct {
18+ Source struct {
19+ URL string `json:"url"`
20+ } `json:"source"`
21+ Time string `json:"time"`
22+ }
23+
1724type PackageDetailsResponse struct {
1825 Package struct {
19- Versions map [string ]struct {
20- Source struct {
21- URL string `json:"url"`
22- } `json:"source"`
23- } `json:"versions"`
26+ Versions map [string ]PackageVersion `json:"versions"`
2427 } `json:"package"`
2528}
2629
@@ -130,19 +133,34 @@ func main() {
130133 continue
131134 }
132135
133- for _ , version := range packageDetails .Package .Versions {
134- log .Printf ("Package: %s, Repository: %s\n " , packageName , version .Source .URL )
135- if strings .Contains (version .Source .URL , "github.com" ) {
136- extension , commitTime := checkShopwareExtensionFile (version .Source .URL , githubClient )
136+ var latestVersion * PackageVersion
137+ var latestTime time.Time
138+
139+ for _ , versionData := range packageDetails .Package .Versions {
140+ parsedTime , err := time .Parse (time .RFC3339 , versionData .Time )
141+ if err != nil {
142+ log .Printf ("Failed to parse time for package version: %s, error: %v" , versionData .Time , err )
143+ continue
144+ }
145+
146+ if latestVersion == nil || parsedTime .After (latestTime ) {
147+ latestTime = parsedTime
148+ latestVersion = & versionData
149+ }
150+ }
151+
152+ if latestVersion != nil {
153+ log .Printf ("Package: %s, Repository: %s\n " , packageName , latestVersion .Source .URL )
154+ if strings .Contains (latestVersion .Source .URL , "github.com" ) {
155+ extension , commitTime := checkShopwareExtensionFile (latestVersion .Source .URL , githubClient )
137156 if extension {
138157 packageData [packageName ] = & ShopwareExtensionMetadata {
139- RepositoryUrl : version .Source .URL ,
158+ RepositoryUrl : latestVersion .Source .URL ,
140159 Ref : detailsURL ,
141160 LatestCommitTime : commitTime ,
142161 }
143162 }
144163 }
145- break // Assuming you want one repository URL per package
146164 }
147165 }
148166
0 commit comments