wip: refactor

This commit is contained in:
2025-02-12 14:34:32 +03:00
parent e773e3ee12
commit 87cae79655
3 changed files with 51 additions and 56 deletions

View File

@ -463,6 +463,36 @@ func (b *Builder) installBuildDeps(ctx context.Context, buildDepends []string) (
return buildDeps, nil
}
func (b *Builder) getBuildersForPackages(pkgs []db.Package) []*Builder {
type item struct {
pkg *db.Package
packages []string
}
pkgsMap := make(map[string]*item)
for _, pkg := range pkgs {
if pkgsMap[pkg.BasePkgName] == nil {
pkgsMap[pkg.BasePkgName] = &item{
pkg: &pkg,
}
}
pkgsMap[pkg.BasePkgName].packages = append(
pkgsMap[pkg.BasePkgName].packages,
pkg.Name,
)
}
builders := []*Builder{}
for basePkgName := range pkgsMap {
pkg := pkgsMap[basePkgName].pkg
builder := *b
builder.UpdateOptsFromPkg(pkg, pkgsMap[basePkgName].packages)
builders = append(builders, &builder)
}
return builders
}
func (b *Builder) buildALRDeps(ctx context.Context, depends []string) (builtPaths, builtNames, repoDeps []string, err error) {
if len(depends) > 0 {
slog.Info(gotext.Get("Installing dependencies"))
@ -475,28 +505,10 @@ func (b *Builder) buildALRDeps(ctx context.Context, depends []string) (builtPath
// Если для некоторых пакетов есть несколько опций, упрощаем их все в один срез
pkgs := cliutils.FlattenPkgs(ctx, found, "install", b.opts.Interactive)
type x struct {
pkg *db.Package
packages []string
}
xx := make(map[string]*x)
for _, pkg := range pkgs {
if xx[pkg.BasePkgName] == nil {
xx[pkg.BasePkgName] = &x{
pkg: &pkg,
}
}
xx[pkg.BasePkgName].packages = append(xx[pkg.BasePkgName].packages, pkg.Name)
}
for basePkgName := range xx {
pkg := xx[basePkgName].pkg
newB := *b
newB.UpdateOptsFromPkg(pkg, xx[basePkgName].packages)
builders := b.getBuildersForPackages(pkgs)
for _, builder := range builders {
// Собираем зависимости
pkgPaths, pkgNames, err := newB.BuildPackage(ctx)
pkgPaths, pkgNames, err := builder.BuildPackage(ctx)
if err != nil {
return nil, nil, nil, err
}
@ -762,25 +774,8 @@ func (b *Builder) InstallPkgs(
}
func (b *Builder) InstallALRPackages(ctx context.Context, pkgs []db.Package, opts types.BuildOpts) {
type x struct {
pkg *db.Package
packages []string
}
xx := make(map[string]*x)
for _, pkg := range pkgs {
if xx[pkg.BasePkgName] == nil {
xx[pkg.BasePkgName] = &x{
pkg: &pkg,
}
}
xx[pkg.BasePkgName].packages = append(xx[pkg.BasePkgName].packages, pkg.Name)
}
for basePkgName := range xx {
pkg := xx[basePkgName].pkg
builder := *b
builder.UpdateOptsFromPkg(pkg, xx[basePkgName].packages)
builders := b.getBuildersForPackages(pkgs)
for _, builder := range builders {
builtPkgs, _, err := builder.BuildPackage(ctx)
// Выполняем сборку пакета
if err != nil {