mirror of
https://github.com/go-gitea/gitea.git
synced 2024-09-01 14:56:30 +00:00
refactoring in metadata module, better readability
shorter function calls in arch service fix - request now ends if unable to decode package signature from hex fix - now package search continues to previous versions in package file for required architecture not found for current version
This commit is contained in:
parent
4bf84c1fd6
commit
8974d27ba3
@ -104,18 +104,6 @@ func EjectMetadata(p *EjectParams) (*DbDesc, error) {
|
||||
md.URL = value
|
||||
case "packager":
|
||||
md.Packager = value
|
||||
case "builddate":
|
||||
num, err := strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
md.BuildDate = num
|
||||
case "size":
|
||||
num, err := strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
md.InstalledSize = num
|
||||
case "provides":
|
||||
md.Provides = append(md.Provides, value)
|
||||
case "license":
|
||||
@ -132,6 +120,16 @@ func EjectMetadata(p *EjectParams) (*DbDesc, error) {
|
||||
md.CheckDepends = append(md.CheckDepends, value)
|
||||
case "backup":
|
||||
md.Backup = append(md.Backup, value)
|
||||
case "builddate":
|
||||
md.BuildDate, err = strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "size":
|
||||
md.InstalledSize, err = strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,53 +162,38 @@ func getPkginfo(data io.Reader) (string, error) {
|
||||
|
||||
// Create pacman package description file.
|
||||
func (m *DbDesc) String() string {
|
||||
return strings.Join(rmEmptyStrings([]string{
|
||||
formatField("FILENAME", m.Filename),
|
||||
formatField("NAME", m.Name),
|
||||
formatField("BASE", m.Base),
|
||||
formatField("VERSION", m.Version),
|
||||
formatField("DESC", m.Description),
|
||||
formatField("CSIZE", m.CompressedSize),
|
||||
formatField("ISIZE", m.InstalledSize),
|
||||
formatField("MD5SUM", m.MD5),
|
||||
formatField("SHA256SUM", m.SHA256),
|
||||
formatField("URL", m.URL),
|
||||
formatField("LICENSE", m.License),
|
||||
formatField("ARCH", m.Arch),
|
||||
formatField("BUILDDATE", m.BuildDate),
|
||||
formatField("PACKAGER", m.Packager),
|
||||
formatField("PROVIDES", m.Provides),
|
||||
formatField("DEPENDS", m.Depends),
|
||||
formatField("OPTDEPENDS", m.OptDepends),
|
||||
formatField("MAKEDEPENDS", m.MakeDepends),
|
||||
formatField("CHECKDEPENDS", m.CheckDepends),
|
||||
}), "\n\n") + "\n\n"
|
||||
}
|
||||
|
||||
func formatField(field string, value any) string {
|
||||
switch value := value.(type) {
|
||||
case []string:
|
||||
if value == nil {
|
||||
return ``
|
||||
}
|
||||
val := strings.Join(value, "\n")
|
||||
return fmt.Sprintf("%%%s%%\n%s", field, val)
|
||||
case string:
|
||||
return fmt.Sprintf("%%%s%%\n%s", field, value)
|
||||
case int64:
|
||||
return fmt.Sprintf("%%%s%%\n%d", field, value)
|
||||
var entries = []struct {
|
||||
Key string
|
||||
Value string
|
||||
}{
|
||||
{Key: "FILENAME", Value: m.Filename},
|
||||
{Key: "NAME", Value: m.Name},
|
||||
{Key: "BASE", Value: m.Base},
|
||||
{Key: "VERSION", Value: m.Version},
|
||||
{Key: "DESC", Value: m.Description},
|
||||
{Key: "CSIZE", Value: fmt.Sprintf("%d", m.CompressedSize)},
|
||||
{Key: "ISIZE", Value: fmt.Sprintf("%d", m.InstalledSize)},
|
||||
{Key: "MD5SUM", Value: m.MD5},
|
||||
{Key: "SHA256SUM", Value: m.SHA256},
|
||||
{Key: "URL", Value: m.URL},
|
||||
{Key: "LICENSE", Value: strings.Join(m.License, "\n")},
|
||||
{Key: "ARCH", Value: strings.Join(m.Arch, "\n")},
|
||||
{Key: "BUILDDATE", Value: fmt.Sprintf("%d", m.BuildDate)},
|
||||
{Key: "PACKAGER", Value: m.Packager},
|
||||
{Key: "PROVIDES", Value: strings.Join(m.Provides, "\n")},
|
||||
{Key: "DEPENDS", Value: strings.Join(m.Depends, "\n")},
|
||||
{Key: "OPTDEPENDS", Value: strings.Join(m.OptDepends, "\n")},
|
||||
{Key: "MAKEDEPENDS", Value: strings.Join(m.MakeDepends, "\n")},
|
||||
{Key: "CHECKDEPENDS", Value: strings.Join(m.CheckDepends, "\n")},
|
||||
}
|
||||
return ``
|
||||
}
|
||||
|
||||
func rmEmptyStrings(s []string) []string {
|
||||
var r []string
|
||||
for _, str := range s {
|
||||
if str != "" {
|
||||
r = append(r, str)
|
||||
var result string
|
||||
for _, v := range entries {
|
||||
if v.Value != "" {
|
||||
result += fmt.Sprintf("%%%s%%\n%s\n\n", v.Key, v.Value)
|
||||
}
|
||||
}
|
||||
return r
|
||||
return result
|
||||
}
|
||||
|
||||
// Create pacman database archive based on provided package metadata structs.
|
||||
|
@ -59,14 +59,15 @@ func Push(ctx *context.Context) {
|
||||
}
|
||||
|
||||
props := map[string]string{
|
||||
distro + "-" + filename + ".desc": desc.String(),
|
||||
"desc": desc.String(),
|
||||
}
|
||||
if sign != "" {
|
||||
_, err := hex.DecodeString(sign)
|
||||
if err != nil {
|
||||
apiError(ctx, http.StatusBadRequest, err)
|
||||
return
|
||||
}
|
||||
props[distro+"-"+filename+".sig"] = sign
|
||||
props["sign"] = sign
|
||||
}
|
||||
|
||||
_, _, err = pkg_service.CreatePackageOrAddFileToExisting(
|
||||
|
@ -44,7 +44,7 @@ func GetPackageSignature(ctx *context.Context, distro, file string) (*bytes.Read
|
||||
}
|
||||
|
||||
for _, pp := range proprs {
|
||||
if pp.Name == distro+"-"+file {
|
||||
if pp.Name == "sign" {
|
||||
b, err := hex.DecodeString(pp.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -62,7 +62,6 @@ func getPackageFile(ctx *context.Context, distro, file string) (*pkg_model.Packa
|
||||
splt = strings.Split(file, "-")
|
||||
pkgname = strings.Join(splt[0:len(splt)-3], "-")
|
||||
vername = splt[len(splt)-3] + "-" + splt[len(splt)-2]
|
||||
compkey = distro + "-" + file
|
||||
)
|
||||
|
||||
version, err := pkg_model.GetVersionByNameAndVersion(
|
||||
@ -72,9 +71,7 @@ func getPackageFile(ctx *context.Context, distro, file string) (*pkg_model.Packa
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pkgfile, err := pkg_model.GetFileForVersionByName(
|
||||
ctx, version.ID, file, compkey,
|
||||
)
|
||||
pkgfile, err := pkg_model.GetFileForVersionByName(ctx, version.ID, file, distro)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -106,36 +103,26 @@ func CreatePacmanDb(ctx *context.Context, owner, arch, distro string) (io.ReadSe
|
||||
return versions[i].CreatedUnix > versions[j].CreatedUnix
|
||||
})
|
||||
|
||||
for _, version := range versions {
|
||||
filename := fmt.Sprintf(
|
||||
"%s-%s-%s.pkg.tar.zst",
|
||||
pkg.Name, version.Version, arch,
|
||||
)
|
||||
for _, ver := range versions {
|
||||
file := fmt.Sprintf("%s-%s-%s.pkg.tar.zst", pkg.Name, ver.Version, arch)
|
||||
|
||||
file, err := pkg_model.GetFileForVersionByName(
|
||||
ctx, version.ID, filename, distro+"-"+filename,
|
||||
)
|
||||
pf, err := pkg_model.GetFileForVersionByName(ctx, ver.ID, file, distro)
|
||||
if err != nil {
|
||||
filename := fmt.Sprintf(
|
||||
"%s-%s-any.pkg.tar.zst",
|
||||
pkg.Name, version.Version,
|
||||
)
|
||||
file, err = pkg_model.GetFileForVersionByName(
|
||||
ctx, version.ID, filename, distro+"-"+filename,
|
||||
)
|
||||
file = fmt.Sprintf("%s-%s-any.pkg.tar.zst", pkg.Name, ver.Version)
|
||||
pf, err = pkg_model.GetFileForVersionByName(ctx, ver.ID, file, distro)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
pps, err := pkg_model.GetProperties(ctx, pkg_model.PropertyTypeFile, file.ID)
|
||||
pps, err := pkg_model.GetProperties(ctx, pkg_model.PropertyTypeFile, pf.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var descvalue string
|
||||
for _, pp := range pps {
|
||||
if strings.HasSuffix(pp.Name, ".desc") {
|
||||
if pp.Name == "desc" {
|
||||
descvalue = pp.Value
|
||||
}
|
||||
}
|
||||
@ -144,7 +131,7 @@ func CreatePacmanDb(ctx *context.Context, owner, arch, distro string) (io.ReadSe
|
||||
continue
|
||||
}
|
||||
|
||||
entries[pkg.Name+"-"+version.Version+"/desc"] = []byte(descvalue)
|
||||
entries[pkg.Name+"-"+ver.Version+"/desc"] = []byte(descvalue)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user