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

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

@ -463,6 +463,36 @@ func (b *Builder) installBuildDeps(ctx context.Context, buildDepends []string) (
return buildDeps, nil 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) { func (b *Builder) buildALRDeps(ctx context.Context, depends []string) (builtPaths, builtNames, repoDeps []string, err error) {
if len(depends) > 0 { if len(depends) > 0 {
slog.Info(gotext.Get("Installing dependencies")) 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) pkgs := cliutils.FlattenPkgs(ctx, found, "install", b.opts.Interactive)
builders := b.getBuildersForPackages(pkgs)
type x struct { for _, builder := range builders {
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)
// Собираем зависимости // Собираем зависимости
pkgPaths, pkgNames, err := newB.BuildPackage(ctx) pkgPaths, pkgNames, err := builder.BuildPackage(ctx)
if err != nil { if err != nil {
return nil, nil, nil, err 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) { func (b *Builder) InstallALRPackages(ctx context.Context, pkgs []db.Package, opts types.BuildOpts) {
type x struct { builders := b.getBuildersForPackages(pkgs)
pkg *db.Package for _, builder := range builders {
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)
builtPkgs, _, err := builder.BuildPackage(ctx) builtPkgs, _, err := builder.BuildPackage(ctx)
// Выполняем сборку пакета // Выполняем сборку пакета
if err != nil { if err != nil {