fixed pacman database creation algorithm, arch UI template

This commit is contained in:
Danila Fominykh 2023-08-02 00:23:12 +03:00
parent a15a92419b
commit d069303825
No known key found for this signature in database
GPG Key ID: 1134F8EBF98AA06F
3 changed files with 60 additions and 27 deletions

View File

@ -38,7 +38,7 @@ type Metadata struct {
} }
// Package description file that will be saved as .desc file in object storage. // Package description file that will be saved as .desc file in object storage.
// Resulting file will be used to create pacman database. // This file will be used to create pacman database.
type DbDesc struct { type DbDesc struct {
Filename string `json:"filename"` Filename string `json:"filename"`
Name string `json:"name"` Name string `json:"name"`

View File

@ -164,37 +164,64 @@ func CreatePacmanDb(ctx *context.Context, owner, architecture, distro string) ([
}) })
for _, version := range versions { for _, version := range versions {
var md arch.Metadata desc, err := GetPacmanDbDesc(ctx, &DescParams{
err = json.Unmarshal([]byte(version.MetadataJSON), &md) Version: version,
Arch: architecture,
Distro: distro,
})
if err != nil { if err != nil {
return nil, err return nil, err
} }
var found bool if desc == nil {
for _, da := range md.DistroArch { continue
if da == distro+"-"+architecture || da == distro+"-any" {
desckey := pkg.Name + "-" + version.Version + "-" + architecture + ".desc"
descfile, err := GetFileObject(ctx, distro, desckey)
if err != nil {
return nil, err
} }
descbytes, err := io.ReadAll(descfile) entries[pkg.Name+"-"+version.Version+"/desc"] = desc
if err != nil {
return nil, err
}
entries[pkg.Name+"-"+version.Version+"/desc"] = descbytes
found = true
break break
} }
} }
if found {
break
}
}
}
return arch.CreatePacmanDb(entries) return arch.CreatePacmanDb(entries)
} }
type DescParams struct {
Version *pkg_model.PackageVersion
Arch string
Distro string
}
// Checks if desc file exists for required architecture or any and returns it
// in form of byte slice.
func GetPacmanDbDesc(ctx *context.Context, p *DescParams) ([]byte, error) {
var md arch.Metadata
err := json.Unmarshal([]byte(p.Version.MetadataJSON), &md)
if err != nil {
return nil, err
}
for _, distroarch := range md.DistroArch {
var storagekey string
if distroarch == p.Distro+"-"+p.Arch {
storagekey = md.Name + "-" + md.Version + "-" + p.Arch + ".desc"
}
if distroarch == p.Distro+"-any" {
storagekey = md.Name + "-" + md.Version + "-any.desc"
}
if storagekey == "" {
continue
}
descfile, err := GetFileObject(ctx, p.Distro, storagekey)
if err != nil {
return nil, err
}
return io.ReadAll(descfile)
}
return nil, nil
}
// Remove specific package version related to provided user or organization. // Remove specific package version related to provided user or organization.
func RemovePackage(ctx *context.Context, u *user.User, name, version string) error { func RemovePackage(ctx *context.Context, u *user.User, name, version string) error {
ver, err := pkg_model.GetVersionByNameAndVersion(ctx, u.ID, pkg_model.TypeArch, name, version) ver, err := pkg_model.GetVersionByNameAndVersion(ctx, u.ID, pkg_model.TypeArch, name, version)

View File

@ -23,7 +23,7 @@ Server = <gitea-origin-url data-url="{{AppSubUrl}}/api/packages/{{.PackageDescri
<h4 class="ui top attached header">{{.locale.Tr "packages.arch.properties"}}</h4> <h4 class="ui top attached header">{{.locale.Tr "packages.arch.properties"}}</h4>
<div class="ui attached segment"> <div class="ui attached segment">
<table class="ui single line very basic table"> <table class="ui very basic compact table">
<tbody> <tbody>
<tr> <tr>
<td class="collapsing"><h5>Description</h5></td> <td class="collapsing"><h5>Description</h5></td>
@ -47,7 +47,7 @@ Server = <gitea-origin-url data-url="{{AppSubUrl}}/api/packages/{{.PackageDescri
{{if .PackageDescriptor.Metadata.OptDepends}} {{if .PackageDescriptor.Metadata.OptDepends}}
<tr> <tr>
<td class="collapsing"><h5>Optional depends</h5></td> <td class="collapsing"><h5>Optional depends</h5></td>
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.OptDepends " "}}</td> <td>{{StringUtils.Join $.PackageDescriptor.Metadata.OptDepends ", "}}</td>
</tr> </tr>
{{end}} {{end}}
@ -71,8 +71,14 @@ Server = <gitea-origin-url data-url="{{AppSubUrl}}/api/packages/{{.PackageDescri
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Backup " "}}</td> <td>{{StringUtils.Join $.PackageDescriptor.Metadata.Backup " "}}</td>
</tr> </tr>
{{end}} {{end}}
{{if .PackageDescriptor.Metadata.DistroArch}}
<tr>
<td class="collapsing"><h5>Available for</h5></td>
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.DistroArch ", "}}</td>
</tr>
{{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
{{end}} {{end}}