forked from Plemya-x/ALR
wip
This commit is contained in:
71
build.go
71
build.go
@@ -20,10 +20,8 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log/slog"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
@@ -31,15 +29,13 @@ import (
|
||||
"github.com/urfave/cli/v2"
|
||||
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
||||
database "gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
||||
appbuilder "gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils/app_builder"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/osutils"
|
||||
"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"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/repos"
|
||||
)
|
||||
|
||||
func BuildCmd() *cli.Command {
|
||||
@@ -74,53 +70,25 @@ func BuildCmd() *cli.Command {
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error getting working directory"), err)
|
||||
}
|
||||
executable, err := os.Executable()
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error getting working directory"), err)
|
||||
}
|
||||
|
||||
cmd := exec.Command(executable, "_internal-mount", wd)
|
||||
var stdout bytes.Buffer
|
||||
cmd.Stdout = &stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
err = cmd.Run()
|
||||
wd, cleanup, err := Mount(wd)
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error getting working directory"), err)
|
||||
}
|
||||
|
||||
wd = stdout.String()
|
||||
|
||||
defer func() {
|
||||
slog.Warn("unmounting...")
|
||||
cmd := exec.Command(executable, "_internal-umount", wd)
|
||||
var stdout bytes.Buffer
|
||||
cmd.Stdout = &stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
err = cmd.Run()
|
||||
}()
|
||||
|
||||
err = utils.DropCapsToAlrUser()
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error dropping capabilities"), err)
|
||||
}
|
||||
_, err = os.Stat(wd)
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error dropping capabilities"), err)
|
||||
return err
|
||||
}
|
||||
defer cleanup()
|
||||
|
||||
ctx := c.Context
|
||||
cfg := config.New()
|
||||
err = cfg.Load()
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error loading config"), err)
|
||||
}
|
||||
|
||||
db := database.New(cfg)
|
||||
rs := repos.New(cfg, db)
|
||||
err = db.Init(ctx)
|
||||
deps, err := appbuilder.
|
||||
New(ctx).
|
||||
WithConfig().
|
||||
WithDB().
|
||||
WithReposNoPull().
|
||||
Build()
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error initialization database"), err)
|
||||
return cli.Exit(err, 1)
|
||||
}
|
||||
defer deps.Defer()
|
||||
|
||||
var script string
|
||||
var packages []string
|
||||
@@ -137,10 +105,17 @@ func BuildCmd() *cli.Command {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error parsing os release"), err)
|
||||
}
|
||||
|
||||
builder := build.NewMainBuilder(
|
||||
cfg,
|
||||
rs,
|
||||
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
builder, err := build.NewMainBuilder(
|
||||
deps.Cfg,
|
||||
deps.Repos,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var res *build.BuildResult
|
||||
|
||||
@@ -179,7 +154,7 @@ func BuildCmd() *cli.Command {
|
||||
packageSearch = arr[0]
|
||||
}
|
||||
|
||||
pkgs, _, _ := rs.FindPkgs(ctx, []string{packageSearch})
|
||||
pkgs, _, _ := deps.Repos.FindPkgs(ctx, []string{packageSearch})
|
||||
pkg, ok := pkgs[packageSearch]
|
||||
if len(pkg) < 1 || !ok {
|
||||
slog.Error(gotext.Get("Package not found"))
|
||||
|
||||
Reference in New Issue
Block a user