Skip to content

Commit

Permalink
add version sorting for the artifacts index (#395)
Browse files Browse the repository at this point in the history
* add version sorting

* newst to oldest sorting

* fix variables initialization
  • Loading branch information
tashima42 authored Mar 25, 2024
1 parent 6e36844 commit 291bbbe
Showing 1 changed file with 32 additions and 12 deletions.
44 changes: 32 additions & 12 deletions release/rancher/rancher.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ type ArtifactsIndexContent struct {
}

type ArtifactsIndexContentGroup struct {
Versions map[string][]string `json:"versions"`
BaseURL string `json:"baseUrl"`
Versions []string `json:"versions"`
VersionsFiles map[string][]string `json:"versionsFiles"`
BaseURL string `json:"baseUrl"`
}

func GeneratePrimeArtifactsIndex(path string) error {
Expand Down Expand Up @@ -98,14 +99,19 @@ func GeneratePrimeArtifactsIndex(path string) error {
func generateArtifactsIndexContent(listBucket ListBucketResult) ArtifactsIndexContent {
indexContent := ArtifactsIndexContent{
GA: ArtifactsIndexContentGroup{
Versions: map[string][]string{},
BaseURL: rancherArtifactsBaseURL,
Versions: []string{},
VersionsFiles: map[string][]string{},
BaseURL: rancherArtifactsBaseURL,
},
PreRelease: ArtifactsIndexContentGroup{
Versions: map[string][]string{},
BaseURL: rancherArtifactsBaseURL,
Versions: []string{},
VersionsFiles: map[string][]string{},
BaseURL: rancherArtifactsBaseURL,
},
}
var versions []string
versionsFiles := make(map[string][]string)

for _, content := range listBucket.Contents {
if !strings.Contains(content.Key, "rancher/") {
continue
Expand All @@ -114,16 +120,30 @@ func generateArtifactsIndexContent(listBucket ListBucketResult) ArtifactsIndexCo
if len(keyFile) < 2 || keyFile[1] == "" {
continue
}
key := keyFile[0]
version := keyFile[0]
file := keyFile[1]

if _, ok := versionsFiles[version]; !ok {
versions = append(versions, version)
}
versionsFiles[version] = append(versionsFiles[version], file)
}

semver.Sort(versions)

// starting from the last index will result in a newest to oldest sorting
for i := len(versions) - 1; i >= 0; i-- {
version := versions[i]
// only non ga releases contains '-' e.g: -rc, -debug
if strings.Contains(key, "-") {
indexContent.PreRelease.Versions[key] = append(indexContent.PreRelease.Versions[key], file)
if strings.Contains(version, "-") {
indexContent.PreRelease.Versions = append(indexContent.PreRelease.Versions, version)
indexContent.PreRelease.VersionsFiles[version] = versionsFiles[version]
} else {
indexContent.GA.Versions[key] = append(indexContent.GA.Versions[key], file)
indexContent.GA.Versions = append(indexContent.GA.Versions, version)
indexContent.GA.VersionsFiles[version] = versionsFiles[version]
}
}

return indexContent
}

Expand Down Expand Up @@ -322,15 +342,15 @@ const artifactsIndexTempalte = `{{ define "release-artifacts-index" }}
<main>
<div class="project-rancher project">
<h2>rancher</h2>
{{ range $version, $files := .Versions }}
{{ range $i, $version := .Versions }}
<div class="release-{{ $version }} release">
<div class="release-title">
<b class="release-title-tag">{{ $version }}</b>
<button onclick="expand('{{ $version }}')" id="release-{{ $version }}-expand" class="release-title-expand">expand</button>
</div>
<div class="files hidden" id="release-{{ $version }}-files">
<ul>
{{ range $files }}
{{ range index $.VersionsFiles $version }}
<li><a href="{{ $.BaseURL }}/rancher/{{ $version }}/{{ . }}">{{ $.BaseURL }}/rancher/{{ $version }}/{{ . }}</a></li>
{{ end }}
</ul>
Expand Down

0 comments on commit 291bbbe

Please sign in to comment.