forked from Plemya-x/ALR
wip
This commit is contained in:
120
build.go
120
build.go
@@ -66,16 +66,20 @@ func BuildCmd() *cli.Command {
|
||||
},
|
||||
},
|
||||
Action: func(c *cli.Context) error {
|
||||
if err := utils.EnuseIsPrivilegedGroupMember(); err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
wd, err := os.Getwd()
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error getting working directory"), err)
|
||||
}
|
||||
|
||||
wd, cleanup, err := Mount(wd)
|
||||
wd, wdCleanup, err := Mount(wd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer cleanup()
|
||||
defer wdCleanup()
|
||||
|
||||
ctx := c.Context
|
||||
|
||||
@@ -105,42 +109,31 @@ func BuildCmd() *cli.Command {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error parsing os release"), err)
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
var scriptArgs *build.BuildPackageFromScriptArgs
|
||||
var dbArgs *build.BuildPackageFromDbArgs
|
||||
|
||||
switch {
|
||||
case c.IsSet("script"):
|
||||
script = c.String("script")
|
||||
script, err = filepath.Abs(c.String("script"))
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Cannot get absolute script path"), err)
|
||||
}
|
||||
|
||||
packages = append(packages, c.String("script-package"))
|
||||
|
||||
res, err = builder.BuildPackageFromScript(
|
||||
ctx,
|
||||
&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,
|
||||
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,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error building package"), err)
|
||||
}
|
||||
case c.IsSet("package"):
|
||||
// TODO: handle multiple packages
|
||||
@@ -165,27 +158,58 @@ func BuildCmd() *cli.Command {
|
||||
packages = append(packages, pkg[0].Name)
|
||||
}
|
||||
|
||||
res, err = builder.BuildPackageFromDb(
|
||||
ctx,
|
||||
&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,
|
||||
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,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error building package"), err)
|
||||
}
|
||||
default:
|
||||
slog.Error(gotext.Get("Nothing to build"))
|
||||
os.Exit(1)
|
||||
return cliutils.FormatCliExit(gotext.Get("Nothing to build"), nil)
|
||||
}
|
||||
|
||||
if scriptArgs != nil {
|
||||
scriptFile := filepath.Base(scriptArgs.Script)
|
||||
newScriptDir, scriptDirCleanup, err := Mount(filepath.Dir(scriptArgs.Script))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer scriptDirCleanup()
|
||||
scriptArgs.Script = filepath.Join(newScriptDir, scriptFile)
|
||||
}
|
||||
|
||||
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
builder, err := build.NewMainBuilder(
|
||||
deps.Cfg,
|
||||
deps.Repos,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if scriptArgs != nil {
|
||||
res, err = builder.BuildPackageFromScript(
|
||||
ctx,
|
||||
scriptArgs,
|
||||
)
|
||||
} else if dbArgs != nil {
|
||||
res, err = builder.BuildPackageFromDb(
|
||||
ctx,
|
||||
dbArgs,
|
||||
)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error building package"), err)
|
||||
}
|
||||
|
||||
// Перемещение собранных пакетов в рабочую директорию
|
||||
@@ -197,6 +221,8 @@ func BuildCmd() *cli.Command {
|
||||
}
|
||||
}
|
||||
|
||||
slog.Info(gotext.Get("Done"))
|
||||
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user