This commit is contained in:
2025-04-15 00:20:57 +03:00
parent 613dc41fdf
commit fe3acf5b85
6 changed files with 126 additions and 118 deletions

View File

@@ -34,8 +34,6 @@ import (
"gitea.plemya-x.ru/Plemya-x/ALR/internal/types"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/utils"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/build"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/distro"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
)
func BuildCmd() *cli.Command {
@@ -88,6 +86,8 @@ func BuildCmd() *cli.Command {
WithConfig().
WithDB().
WithReposNoPull().
WithDistroInfo().
WithManager().
Build()
if err != nil {
return cli.Exit(err, 1)
@@ -97,23 +97,20 @@ func BuildCmd() *cli.Command {
var script string
var packages []string
// Обнаружение менеджера пакетов
mgr := manager.Detect()
if mgr == nil {
slog.Error(gotext.Get("Unable to detect a supported package manager on the system"))
os.Exit(1)
}
info, err := distro.ParseOSRelease(ctx)
if err != nil {
return cliutils.FormatCliExit(gotext.Get("Error parsing os release"), err)
}
var res *build.BuildResult
var scriptArgs *build.BuildPackageFromScriptArgs
var dbArgs *build.BuildPackageFromDbArgs
buildArgs := &build.BuildArgs{
Opts: &types.BuildOpts{
Clean: c.Bool("clean"),
Interactive: c.Bool("interactive"),
},
PkgFormat_: build.GetPkgFormat(deps.Manager),
Info: deps.Info,
}
switch {
case c.IsSet("script"):
script, err = filepath.Abs(c.String("script"))
@@ -124,16 +121,9 @@ func BuildCmd() *cli.Command {
packages = append(packages, c.String("script-package"))
scriptArgs = &build.BuildPackageFromScriptArgs{
Script: script,
Packages: packages,
BuildArgs: build.BuildArgs{
Opts: &types.BuildOpts{
Clean: c.Bool("clean"),
Interactive: c.Bool("interactive"),
},
PkgFormat_: build.GetPkgFormat(mgr),
Info: info,
},
Script: script,
Packages: packages,
BuildArgs: *buildArgs,
}
case c.IsSet("package"):
// TODO: handle multiple packages
@@ -147,11 +137,15 @@ func BuildCmd() *cli.Command {
packageSearch = arr[0]
}
pkgs, _, _ := deps.Repos.FindPkgs(ctx, []string{packageSearch})
pkg, ok := pkgs[packageSearch]
if len(pkg) < 1 || !ok {
slog.Error(gotext.Get("Package not found"))
os.Exit(1)
pkgs, _, err := deps.Repos.FindPkgs(ctx, []string{packageSearch})
if err != nil {
return cliutils.FormatCliExit("failed to find pkgs", err)
}
pkg := cliutils.FlattenPkgs(ctx, pkgs, "build", c.Bool("interactive"))
if len(pkg) < 1 {
return cliutils.FormatCliExit(gotext.Get("Package not found"), nil)
}
if pkg[0].BasePkgName != "" {
@@ -159,16 +153,9 @@ func BuildCmd() *cli.Command {
}
dbArgs = &build.BuildPackageFromDbArgs{
Package: &pkg[0],
Packages: packages,
BuildArgs: build.BuildArgs{
Opts: &types.BuildOpts{
Clean: c.Bool("clean"),
Interactive: c.Bool("interactive"),
},
PkgFormat_: build.GetPkgFormat(mgr),
Info: info,
},
Package: &pkg[0],
Packages: packages,
BuildArgs: *buildArgs,
}
default:
return cliutils.FormatCliExit(gotext.Get("Nothing to build"), nil)
@@ -212,7 +199,6 @@ func BuildCmd() *cli.Command {
return cliutils.FormatCliExit(gotext.Get("Error building package"), err)
}
// Перемещение собранных пакетов в рабочую директорию
for _, pkgPath := range res.PackagePaths {
name := filepath.Base(pkgPath)
err = osutils.Move(pkgPath, filepath.Join(wd, name))