wip: refactor

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

@ -343,35 +343,35 @@ msgstr ""
msgid "Installing build dependencies"
msgstr ""
#: pkg/build/build.go:468
#: pkg/build/build.go:498
msgid "Installing dependencies"
msgstr ""
#: pkg/build/build.go:521
#: pkg/build/build.go:533
msgid "The checksums array must be the same length as sources"
msgstr ""
#: pkg/build/build.go:572
#: pkg/build/build.go:584
msgid "Would you like to remove the build dependencies?"
msgstr ""
#: pkg/build/build.go:635
#: pkg/build/build.go:647
msgid "Executing prepare()"
msgstr ""
#: pkg/build/build.go:645
#: pkg/build/build.go:657
msgid "Executing build()"
msgstr ""
#: pkg/build/build.go:675 pkg/build/build.go:695
#: pkg/build/build.go:687 pkg/build/build.go:707
msgid "Executing %s()"
msgstr ""
#: pkg/build/build.go:754
#: pkg/build/build.go:766
msgid "Error installing native packages"
msgstr ""
#: pkg/build/build.go:795
#: pkg/build/build.go:790
msgid "Error installing package"
msgstr ""

@ -360,36 +360,36 @@ msgstr "Этот пакет уже установлен"
msgid "Installing build dependencies"
msgstr "Установка зависимостей сборки"
#: pkg/build/build.go:468
#: pkg/build/build.go:498
msgid "Installing dependencies"
msgstr "Установка зависимостей"
#: pkg/build/build.go:521
#: pkg/build/build.go:533
msgid "The checksums array must be the same length as sources"
msgstr "Массив контрольных сумм должен быть той же длины, что и источники"
#: pkg/build/build.go:572
#: pkg/build/build.go:584
msgid "Would you like to remove the build dependencies?"
msgstr "Хотели бы вы удалить зависимости сборки?"
#: pkg/build/build.go:635
#: pkg/build/build.go:647
msgid "Executing prepare()"
msgstr "Исполнение prepare()"
#: pkg/build/build.go:645
#: pkg/build/build.go:657
msgid "Executing build()"
msgstr "Исполнение build()"
#: pkg/build/build.go:675 pkg/build/build.go:695
#: pkg/build/build.go:687 pkg/build/build.go:707
#, fuzzy
msgid "Executing %s()"
msgstr "Исполнение files()"
#: pkg/build/build.go:754
#: pkg/build/build.go:766
msgid "Error installing native packages"
msgstr "Ошибка при установке нативных пакетов"
#: pkg/build/build.go:795
#: pkg/build/build.go:790
msgid "Error installing package"
msgstr "Ошибка при установке пакета"

@ -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 {