Add Conda package registry (#22262)
This PR adds a [Conda](https://conda.io/) package registry.
This commit is contained in:
parent
5882e179a9
commit
6ba9ff7b48
24 changed files with 1244 additions and 3 deletions
63
models/packages/conda/search.go
Normal file
63
models/packages/conda/search.go
Normal file
|
@ -0,0 +1,63 @@
|
|||
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package conda
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/packages"
|
||||
conda_module "code.gitea.io/gitea/modules/packages/conda"
|
||||
|
||||
"xorm.io/builder"
|
||||
)
|
||||
|
||||
type FileSearchOptions struct {
|
||||
OwnerID int64
|
||||
Channel string
|
||||
Subdir string
|
||||
Filename string
|
||||
}
|
||||
|
||||
// SearchFiles gets all files matching the search options
|
||||
func SearchFiles(ctx context.Context, opts *FileSearchOptions) ([]*packages.PackageFile, error) {
|
||||
var cond builder.Cond = builder.Eq{
|
||||
"package.type": packages.TypeConda,
|
||||
"package.owner_id": opts.OwnerID,
|
||||
"package_version.is_internal": false,
|
||||
}
|
||||
|
||||
if opts.Filename != "" {
|
||||
cond = cond.And(builder.Eq{
|
||||
"package_file.lower_name": strings.ToLower(opts.Filename),
|
||||
})
|
||||
}
|
||||
|
||||
var versionPropsCond builder.Cond = builder.Eq{
|
||||
"package_property.ref_type": packages.PropertyTypePackage,
|
||||
"package_property.name": conda_module.PropertyChannel,
|
||||
"package_property.value": opts.Channel,
|
||||
}
|
||||
|
||||
cond = cond.And(builder.In("package.id", builder.Select("package_property.ref_id").Where(versionPropsCond).From("package_property")))
|
||||
|
||||
var filePropsCond builder.Cond = builder.Eq{
|
||||
"package_property.ref_type": packages.PropertyTypeFile,
|
||||
"package_property.name": conda_module.PropertySubdir,
|
||||
"package_property.value": opts.Subdir,
|
||||
}
|
||||
|
||||
cond = cond.And(builder.In("package_file.id", builder.Select("package_property.ref_id").Where(filePropsCond).From("package_property")))
|
||||
|
||||
sess := db.GetEngine(ctx).
|
||||
Select("package_file.*").
|
||||
Table("package_file").
|
||||
Join("INNER", "package_version", "package_version.id = package_file.version_id").
|
||||
Join("INNER", "package", "package.id = package_version.package_id").
|
||||
Where(cond)
|
||||
|
||||
pfs := make([]*packages.PackageFile, 0, 10)
|
||||
return pfs, sess.Find(&pfs)
|
||||
}
|
|
@ -13,6 +13,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/json"
|
||||
"code.gitea.io/gitea/modules/packages/composer"
|
||||
"code.gitea.io/gitea/modules/packages/conan"
|
||||
"code.gitea.io/gitea/modules/packages/conda"
|
||||
"code.gitea.io/gitea/modules/packages/container"
|
||||
"code.gitea.io/gitea/modules/packages/helm"
|
||||
"code.gitea.io/gitea/modules/packages/maven"
|
||||
|
@ -132,6 +133,8 @@ func GetPackageDescriptor(ctx context.Context, pv *PackageVersion) (*PackageDesc
|
|||
metadata = &composer.Metadata{}
|
||||
case TypeConan:
|
||||
metadata = &conan.Metadata{}
|
||||
case TypeConda:
|
||||
metadata = &conda.VersionMetadata{}
|
||||
case TypeContainer:
|
||||
metadata = &container.Metadata{}
|
||||
case TypeGeneric:
|
||||
|
|
|
@ -32,6 +32,7 @@ type Type string
|
|||
const (
|
||||
TypeComposer Type = "composer"
|
||||
TypeConan Type = "conan"
|
||||
TypeConda Type = "conda"
|
||||
TypeContainer Type = "container"
|
||||
TypeGeneric Type = "generic"
|
||||
TypeHelm Type = "helm"
|
||||
|
@ -47,6 +48,7 @@ const (
|
|||
var TypeList = []Type{
|
||||
TypeComposer,
|
||||
TypeConan,
|
||||
TypeConda,
|
||||
TypeContainer,
|
||||
TypeGeneric,
|
||||
TypeHelm,
|
||||
|
@ -66,6 +68,8 @@ func (pt Type) Name() string {
|
|||
return "Composer"
|
||||
case TypeConan:
|
||||
return "Conan"
|
||||
case TypeConda:
|
||||
return "Conda"
|
||||
case TypeContainer:
|
||||
return "Container"
|
||||
case TypeGeneric:
|
||||
|
@ -97,6 +101,8 @@ func (pt Type) SVGName() string {
|
|||
return "gitea-composer"
|
||||
case TypeConan:
|
||||
return "gitea-conan"
|
||||
case TypeConda:
|
||||
return "gitea-conda"
|
||||
case TypeContainer:
|
||||
return "octicon-container"
|
||||
case TypeGeneric:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue