forked from Plemya-x/ALR
wip
This commit is contained in:
66
build.go
66
build.go
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user