Skip to content

Commit bf098c4

Browse files
committed
Extract and render readme.
1 parent 3944903 commit bf098c4

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

modules/packages/nuget/metadata.go

+14-3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ type Package struct {
5858
type Metadata struct {
5959
Description string `json:"description,omitempty"`
6060
ReleaseNotes string `json:"release_notes,omitempty"`
61+
Readme string `json:"readme,omitempty"`
6162
Authors string `json:"authors,omitempty"`
6263
ProjectURL string `json:"project_url,omitempty"`
6364
RepositoryURL string `json:"repository_url,omitempty"`
@@ -81,6 +82,7 @@ type nuspecPackage struct {
8182
ProjectURL string `xml:"projectUrl"`
8283
Description string `xml:"description"`
8384
ReleaseNotes string `xml:"releaseNotes"`
85+
Readme string `xml:"readme"`
8486
PackageTypes struct {
8587
PackageType []struct {
8688
Name string `xml:"name,attr"`
@@ -90,7 +92,7 @@ type nuspecPackage struct {
9092
URL string `xml:"url,attr"`
9193
} `xml:"repository"`
9294
Dependencies struct {
93-
Dependency []struct {
95+
Dependency []struct {
9496
ID string `xml:"id,attr"`
9597
Version string `xml:"version,attr"`
9698
Exclude string `xml:"exclude,attr"`
@@ -128,14 +130,14 @@ func ParsePackageMetaData(r io.ReaderAt, size int64) (*Package, error) {
128130
}
129131
defer f.Close()
130132

131-
return ParseNuspecMetaData(f)
133+
return ParseNuspecMetaData(archive, f)
132134
}
133135
}
134136
return nil, ErrMissingNuspecFile
135137
}
136138

137139
// ParseNuspecMetaData parses a Nuspec file to retrieve the metadata of a Nuget package
138-
func ParseNuspecMetaData(r io.Reader) (*Package, error) {
140+
func ParseNuspecMetaData(archive *zip.Reader, r io.Reader) (*Package, error) {
139141
var p nuspecPackage
140142
if err := xml.NewDecoder(r).Decode(&p); err != nil {
141143
return nil, err
@@ -172,6 +174,15 @@ func ParseNuspecMetaData(r io.Reader) (*Package, error) {
172174
Dependencies: make(map[string][]Dependency),
173175
}
174176

177+
if p.Metadata.Readme != "" {
178+
f, err := archive.Open(p.Metadata.Readme)
179+
if err == nil {
180+
buf, _ := io.ReadAll(f)
181+
m.Readme = string(buf)
182+
_ = f.Close()
183+
}
184+
}
185+
175186
if len(p.Metadata.Dependencies.Dependency) > 0 {
176187
deps := make([]Dependency, 0, len(p.Metadata.Dependencies.Dependency))
177188
for _, dep := range p.Metadata.Dependencies.Dependency {

templates/package/content/nuget.tmpl

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@
1616
</div>
1717
</div>
1818

19-
{{if or .PackageDescriptor.Metadata.Description .PackageDescriptor.Metadata.ReleaseNotes}}
19+
{{if or .PackageDescriptor.Metadata.Description .PackageDescriptor.Metadata.ReleaseNotes .PackageDescriptor.Metadata.Readme}}
2020
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.about"}}</h4>
2121
{{if .PackageDescriptor.Metadata.Description}}<div class="ui attached segment">{{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.Description}}</div>{{end}}
22+
{{if .PackageDescriptor.Metadata.Readme}}<div class="ui attached segment markup markdown">{{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.Readme}}</div>{{end}}
2223
{{if .PackageDescriptor.Metadata.ReleaseNotes}}<div class="ui attached segment">{{RenderMarkdownToHtml $.Context .PackageDescriptor.Metadata.ReleaseNotes}}</div>{{end}}
2324
{{end}}
2425

0 commit comments

Comments
 (0)