Compare commits

..

No commits in common. "f7258aa42b6229e077be99ec63ee4993558a7004" and "145e11bc397ef034cde45520eea96dd17a378434" have entirely different histories.

5 changed files with 22 additions and 38 deletions

View File

@ -941,8 +941,7 @@ steps:
image: plugins/hugo:latest image: plugins/hugo:latest
pull: always pull: always
commands: commands:
# https://github.com/drone-plugins/drone-hugo/issues/36 - apk add --no-cache make bash curl
- apk upgrade --no-cache libcurl && apk add --no-cache make bash curl
- cd docs - cd docs
- make trans-copy clean build - make trans-copy clean build

View File

@ -6,10 +6,8 @@ package nuget
import ( import (
"archive/zip" "archive/zip"
"bytes"
"encoding/xml" "encoding/xml"
"errors" "errors"
"fmt"
"io" "io"
"path/filepath" "path/filepath"
"regexp" "regexp"
@ -185,23 +183,7 @@ func ParseNuspecMetaData(r io.Reader) (*Package, error) {
return &Package{ return &Package{
PackageType: packageType, PackageType: packageType,
ID: p.Metadata.ID, ID: p.Metadata.ID,
Version: toNormalizedVersion(v), Version: v.String(),
Metadata: m, Metadata: m,
}, nil }, nil
} }
// https://learn.microsoft.com/en-us/nuget/concepts/package-versioning#normalized-version-numbers
// https://github.com/NuGet/NuGet.Client/blob/dccbd304b11103e08b97abf4cf4bcc1499d9235a/src/NuGet.Core/NuGet.Versioning/VersionFormatter.cs#L121
func toNormalizedVersion(v *version.Version) string {
var buf bytes.Buffer
segments := v.Segments64()
fmt.Fprintf(&buf, "%d.%d.%d", segments[0], segments[1], segments[2])
if len(segments) > 3 && segments[3] > 0 {
fmt.Fprintf(&buf, ".%d", segments[3])
}
pre := v.Prerelease()
if pre != "" {
fmt.Fprint(&buf, "-", pre)
}
return buf.String()
}

View File

@ -147,19 +147,6 @@ func TestParseNuspecMetaData(t *testing.T) {
assert.Len(t, deps, 1) assert.Len(t, deps, 1)
assert.Equal(t, dependencyID, deps[0].ID) assert.Equal(t, dependencyID, deps[0].ID)
assert.Equal(t, dependencyVersion, deps[0].Version) assert.Equal(t, dependencyVersion, deps[0].Version)
t.Run("NormalizedVersion", func(t *testing.T) {
np, err := ParseNuspecMetaData(strings.NewReader(`<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>test</id>
<version>1.04.5.2.5-rc.1+metadata</version>
</metadata>
</package>`))
assert.NoError(t, err)
assert.NotNil(t, np)
assert.Equal(t, "1.4.5.2-rc.1", np.Version)
})
}) })
t.Run("Symbols Package", func(t *testing.T) { t.Run("Symbols Package", func(t *testing.T) {

View File

@ -345,7 +345,7 @@ func createEntry(l *linkBuilder, pd *packages_model.PackageDescriptor, withNames
Content: content, Content: content,
Properties: &FeedEntryProperties{ Properties: &FeedEntryProperties{
Version: pd.Version.Version, Version: pd.Version.Version,
NormalizedVersion: pd.Version.Version, NormalizedVersion: normalizeVersion(pd.SemVer),
Authors: metadata.Authors, Authors: metadata.Authors,
Dependencies: buildDependencyString(metadata), Dependencies: buildDependencyString(metadata),
Description: metadata.Description, Description: metadata.Description,

View File

@ -5,11 +5,15 @@
package nuget package nuget
import ( import (
"bytes"
"fmt"
"sort" "sort"
"time" "time"
packages_model "code.gitea.io/gitea/models/packages" packages_model "code.gitea.io/gitea/models/packages"
nuget_module "code.gitea.io/gitea/modules/packages/nuget" nuget_module "code.gitea.io/gitea/modules/packages/nuget"
"github.com/hashicorp/go-version"
) )
// https://docs.microsoft.com/en-us/nuget/api/service-index#resources // https://docs.microsoft.com/en-us/nuget/api/service-index#resources
@ -92,8 +96,8 @@ func createRegistrationIndexResponse(l *linkBuilder, pds []*packages_model.Packa
{ {
RegistrationPageURL: l.GetRegistrationIndexURL(pds[0].Package.Name), RegistrationPageURL: l.GetRegistrationIndexURL(pds[0].Package.Name),
Count: len(pds), Count: len(pds),
Lower: pds[0].Version.Version, Lower: normalizeVersion(pds[0].SemVer),
Upper: pds[len(pds)-1].Version.Version, Upper: normalizeVersion(pds[len(pds)-1].SemVer),
Items: items, Items: items,
}, },
}, },
@ -170,7 +174,7 @@ type PackageVersionsResponse struct {
func createPackageVersionsResponse(pds []*packages_model.PackageDescriptor) *PackageVersionsResponse { func createPackageVersionsResponse(pds []*packages_model.PackageDescriptor) *PackageVersionsResponse {
versions := make([]string, 0, len(pds)) versions := make([]string, 0, len(pds))
for _, pd := range pds { for _, pd := range pds {
versions = append(versions, pd.Version.Version) versions = append(versions, normalizeVersion(pd.SemVer))
} }
return &PackageVersionsResponse{ return &PackageVersionsResponse{
@ -245,3 +249,15 @@ func createSearchResult(l *linkBuilder, pds []*packages_model.PackageDescriptor)
RegistrationIndexURL: l.GetRegistrationIndexURL(latest.Package.Name), RegistrationIndexURL: l.GetRegistrationIndexURL(latest.Package.Name),
} }
} }
// normalizeVersion removes the metadata
func normalizeVersion(v *version.Version) string {
var buf bytes.Buffer
segments := v.Segments64()
fmt.Fprintf(&buf, "%d.%d.%d", segments[0], segments[1], segments[2])
pre := v.Prerelease()
if pre != "" {
fmt.Fprintf(&buf, "-%s", pre)
}
return buf.String()
}