wip: refactor
This commit is contained in:
@ -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 {
|
||||
|
Reference in New Issue
Block a user