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.
// Resulting file will be used to create pacman database.
// This file will be used to create pacman database.
type DbDesc struct {
Filename string `json:"filename"`
Name string `json:"name"`

View File

@ -164,37 +164,64 @@ func CreatePacmanDb(ctx *context.Context, owner, architecture, distro string) ([
})
for _, version := range versions {
var md arch.Metadata
err = json.Unmarshal([]byte(version.MetadataJSON), &md)
desc, err := GetPacmanDbDesc(ctx, &DescParams{
Version: version,
Arch: architecture,
Distro: distro,
})
if err != nil {
return nil, err
}
var found bool
for _, da := range md.DistroArch {
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)
if err != nil {
return nil, err
}
entries[pkg.Name+"-"+version.Version+"/desc"] = descbytes
found = true
break
}
}
if found {
break
if desc == nil {
continue
}
entries[pkg.Name+"-"+version.Version+"/desc"] = desc
break
}
}
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.
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)

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>
<div class="ui attached segment">
<table class="ui single line very basic table">
<table class="ui very basic compact table">
<tbody>
<tr>
<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}}
<tr>
<td class="collapsing"><h5>Optional depends</h5></td>
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.OptDepends " "}}</td>
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.OptDepends ", "}}</td>
</tr>
{{end}}
@ -57,22 +57,28 @@ Server = <gitea-origin-url data-url="{{AppSubUrl}}/api/packages/{{.PackageDescri
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.MakeDepends " "}}</td>
</tr>
{{end}}
{{if .PackageDescriptor.Metadata.CheckDepends}}
<tr>
<td class="collapsing"><h5>Check depends</h5></td>
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.CheckDepends " "}}</td>
</tr>
{{end}}
{{if .PackageDescriptor.Metadata.Backup}}
<tr>
<td class="collapsing"><h5>Backup file</h5></td>
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Backup " "}}</td>
</tr>
{{end}}
{{if .PackageDescriptor.Metadata.DistroArch}}
<tr>
<td class="collapsing"><h5>Available for</h5></td>
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.DistroArch ", "}}</td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{end}}