forked from Plemya-x/ALR
wip
This commit is contained in:
parent
6d5016270f
commit
613dc41fdf
@ -11,7 +11,7 @@
|
|||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text>
|
<text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text>
|
||||||
<text x="33.5" y="14">coverage</text>
|
<text x="33.5" y="14">coverage</text>
|
||||||
<text x="86" y="15" fill="#010101" fill-opacity=".3">16.1%</text>
|
<text x="86" y="15" fill="#010101" fill-opacity=".3">16.0%</text>
|
||||||
<text x="86" y="14">16.1%</text>
|
<text x="86" y="14">16.0%</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B |
@ -12,7 +12,7 @@
|
|||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="37" y="15" fill="#010101" fill-opacity=".3">ru translate</text>
|
<text x="37" y="15" fill="#010101" fill-opacity=".3">ru translate</text>
|
||||||
<text x="37" y="14">ru translate</text>
|
<text x="37" y="14">ru translate</text>
|
||||||
<text x="100" y="15" fill="#010101" fill-opacity=".3">99.00%</text>
|
<text x="100" y="15" fill="#010101" fill-opacity=".3">97.00%</text>
|
||||||
<text x="100" y="14">99.00%</text>
|
<text x="100" y="14">97.00%</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 940 B After Width: | Height: | Size: 940 B |
120
build.go
120
build.go
@ -66,16 +66,20 @@ func BuildCmd() *cli.Command {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
if err := utils.EnuseIsPrivilegedGroupMember(); err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
wd, err := os.Getwd()
|
wd, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cliutils.FormatCliExit(gotext.Get("Error getting working directory"), err)
|
return cliutils.FormatCliExit(gotext.Get("Error getting working directory"), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
wd, cleanup, err := Mount(wd)
|
wd, wdCleanup, err := Mount(wd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer cleanup()
|
defer wdCleanup()
|
||||||
|
|
||||||
ctx := c.Context
|
ctx := c.Context
|
||||||
|
|
||||||
@ -105,42 +109,31 @@ func BuildCmd() *cli.Command {
|
|||||||
return cliutils.FormatCliExit(gotext.Get("Error parsing os release"), err)
|
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 res *build.BuildResult
|
||||||
|
|
||||||
|
var scriptArgs *build.BuildPackageFromScriptArgs
|
||||||
|
var dbArgs *build.BuildPackageFromDbArgs
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case c.IsSet("script"):
|
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"))
|
packages = append(packages, c.String("script-package"))
|
||||||
|
|
||||||
res, err = builder.BuildPackageFromScript(
|
scriptArgs = &build.BuildPackageFromScriptArgs{
|
||||||
ctx,
|
Script: script,
|
||||||
&build.BuildPackageFromScriptArgs{
|
Packages: packages,
|
||||||
Script: script,
|
BuildArgs: build.BuildArgs{
|
||||||
Packages: packages,
|
Opts: &types.BuildOpts{
|
||||||
BuildArgs: build.BuildArgs{
|
Clean: c.Bool("clean"),
|
||||||
Opts: &types.BuildOpts{
|
Interactive: c.Bool("interactive"),
|
||||||
Clean: c.Bool("clean"),
|
|
||||||
Interactive: c.Bool("interactive"),
|
|
||||||
},
|
|
||||||
PkgFormat_: build.GetPkgFormat(mgr),
|
|
||||||
Info: info,
|
|
||||||
},
|
},
|
||||||
|
PkgFormat_: build.GetPkgFormat(mgr),
|
||||||
|
Info: info,
|
||||||
},
|
},
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return cliutils.FormatCliExit(gotext.Get("Error building package"), err)
|
|
||||||
}
|
}
|
||||||
case c.IsSet("package"):
|
case c.IsSet("package"):
|
||||||
// TODO: handle multiple packages
|
// TODO: handle multiple packages
|
||||||
@ -165,27 +158,58 @@ func BuildCmd() *cli.Command {
|
|||||||
packages = append(packages, pkg[0].Name)
|
packages = append(packages, pkg[0].Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err = builder.BuildPackageFromDb(
|
dbArgs = &build.BuildPackageFromDbArgs{
|
||||||
ctx,
|
Package: &pkg[0],
|
||||||
&build.BuildPackageFromDbArgs{
|
Packages: packages,
|
||||||
Package: &pkg[0],
|
BuildArgs: build.BuildArgs{
|
||||||
Packages: packages,
|
Opts: &types.BuildOpts{
|
||||||
BuildArgs: build.BuildArgs{
|
Clean: c.Bool("clean"),
|
||||||
Opts: &types.BuildOpts{
|
Interactive: c.Bool("interactive"),
|
||||||
Clean: c.Bool("clean"),
|
|
||||||
Interactive: c.Bool("interactive"),
|
|
||||||
},
|
|
||||||
PkgFormat_: build.GetPkgFormat(mgr),
|
|
||||||
Info: info,
|
|
||||||
},
|
},
|
||||||
|
PkgFormat_: build.GetPkgFormat(mgr),
|
||||||
|
Info: info,
|
||||||
},
|
},
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return cliutils.FormatCliExit(gotext.Get("Error building package"), err)
|
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
slog.Error(gotext.Get("Nothing to build"))
|
return cliutils.FormatCliExit(gotext.Get("Nothing to build"), nil)
|
||||||
os.Exit(1)
|
}
|
||||||
|
|
||||||
|
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
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
17
internal.go
17
internal.go
@ -198,10 +198,21 @@ func InternalMountCmd() *cli.Command {
|
|||||||
|
|
||||||
sourceDir := c.Args().First()
|
sourceDir := c.Args().First()
|
||||||
|
|
||||||
u, _ := user.Current()
|
u, err := user.Current()
|
||||||
_, alrGid, _ := utils.GetUidGidAlrUser()
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit("cannot get current user", err)
|
||||||
|
}
|
||||||
|
|
||||||
if err := utils.EnuseIsWheelMember(); err != nil {
|
_, alrGid, err := utils.GetUidGidAlrUser()
|
||||||
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit("cannot get alr user", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := os.Stat(sourceDir); err != nil {
|
||||||
|
return cliutils.FormatCliExit(fmt.Sprintf("cannot read %s", sourceDir), err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.EnuseIsPrivilegedGroupMember(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,4 +20,5 @@ const (
|
|||||||
SystemConfigPath = "/etc/alr/alr.toml"
|
SystemConfigPath = "/etc/alr/alr.toml"
|
||||||
SystemCachePath = "/var/cache/alr"
|
SystemCachePath = "/var/cache/alr"
|
||||||
AlrRunDir = "/var/run/alr"
|
AlrRunDir = "/var/run/alr"
|
||||||
|
PrivilegedGroup = "wheel"
|
||||||
)
|
)
|
||||||
|
@ -30,34 +30,42 @@ msgid ""
|
|||||||
"Build package from scratch even if there's an already built package available"
|
"Build package from scratch even if there's an already built package available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:71
|
#: build.go:75
|
||||||
msgid "Error getting working directory"
|
msgid "Error getting working directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:99
|
#: build.go:103
|
||||||
msgid "Unable to detect a supported package manager on the system"
|
msgid "Unable to detect a supported package manager on the system"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:105
|
#: build.go:109
|
||||||
msgid "Error parsing os release"
|
msgid "Error parsing os release"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:143 build.go:184
|
#: build.go:121
|
||||||
msgid "Error building package"
|
msgid "Cannot get absolute script path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:160
|
#: build.go:153
|
||||||
msgid "Package not found"
|
msgid "Package not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:187
|
#: build.go:174
|
||||||
msgid "Nothing to build"
|
msgid "Nothing to build"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:196
|
#: build.go:212
|
||||||
|
msgid "Error building package"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: build.go:220
|
||||||
msgid "Error moving the package"
|
msgid "Error moving the package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: build.go:224
|
||||||
|
msgid "Done"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: fix.go:38
|
#: fix.go:38
|
||||||
msgid "Attempt to fix problems with ALR"
|
msgid "Attempt to fix problems with ALR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -86,10 +94,6 @@ msgstr ""
|
|||||||
msgid "Unable to create new cache directory"
|
msgid "Unable to create new cache directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: fix.go:98
|
|
||||||
msgid "Done"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: gen.go:34
|
#: gen.go:34
|
||||||
msgid "Generate a ALR script from a template"
|
msgid "Generate a ALR script from a template"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -307,14 +311,18 @@ msgstr ""
|
|||||||
msgid "ERROR"
|
msgid "ERROR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:86
|
#: internal/utils/cmd.go:87
|
||||||
msgid "Error dropping capabilities"
|
msgid "Error dropping capabilities"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:93
|
#: internal/utils/cmd.go:94
|
||||||
msgid "You need to be root to perform this action"
|
msgid "You need to be root to perform this action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: internal/utils/cmd.go:136
|
||||||
|
msgid "You need to be a %s member to perform this action"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: list.go:41
|
#: list.go:41
|
||||||
msgid "List ALR repo packages"
|
msgid "List ALR repo packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -37,35 +37,43 @@ msgid ""
|
|||||||
"Build package from scratch even if there's an already built package available"
|
"Build package from scratch even if there's an already built package available"
|
||||||
msgstr "Создайте пакет с нуля, даже если уже имеется готовый пакет"
|
msgstr "Создайте пакет с нуля, даже если уже имеется готовый пакет"
|
||||||
|
|
||||||
#: build.go:71
|
#: build.go:75
|
||||||
msgid "Error getting working directory"
|
msgid "Error getting working directory"
|
||||||
msgstr "Ошибка при получении рабочего каталога"
|
msgstr "Ошибка при получении рабочего каталога"
|
||||||
|
|
||||||
#: build.go:99
|
#: build.go:103
|
||||||
msgid "Unable to detect a supported package manager on the system"
|
msgid "Unable to detect a supported package manager on the system"
|
||||||
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
||||||
|
|
||||||
#: build.go:105
|
#: build.go:109
|
||||||
msgid "Error parsing os release"
|
msgid "Error parsing os release"
|
||||||
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
||||||
|
|
||||||
#: build.go:143 build.go:184
|
#: build.go:121
|
||||||
msgid "Error building package"
|
msgid "Cannot get absolute script path"
|
||||||
msgstr "Ошибка при сборке пакета"
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:160
|
#: build.go:153
|
||||||
msgid "Package not found"
|
msgid "Package not found"
|
||||||
msgstr "Пакет не найден"
|
msgstr "Пакет не найден"
|
||||||
|
|
||||||
#: build.go:187
|
#: build.go:174
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Nothing to build"
|
msgid "Nothing to build"
|
||||||
msgstr "Исполнение build()"
|
msgstr "Исполнение build()"
|
||||||
|
|
||||||
#: build.go:196
|
#: build.go:212
|
||||||
|
msgid "Error building package"
|
||||||
|
msgstr "Ошибка при сборке пакета"
|
||||||
|
|
||||||
|
#: build.go:220
|
||||||
msgid "Error moving the package"
|
msgid "Error moving the package"
|
||||||
msgstr "Ошибка при перемещении пакета"
|
msgstr "Ошибка при перемещении пакета"
|
||||||
|
|
||||||
|
#: build.go:224
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "Сделано"
|
||||||
|
|
||||||
#: fix.go:38
|
#: fix.go:38
|
||||||
msgid "Attempt to fix problems with ALR"
|
msgid "Attempt to fix problems with ALR"
|
||||||
msgstr "Попытка устранить проблемы с ALR"
|
msgstr "Попытка устранить проблемы с ALR"
|
||||||
@ -98,10 +106,6 @@ msgstr "Восстановление кэша"
|
|||||||
msgid "Unable to create new cache directory"
|
msgid "Unable to create new cache directory"
|
||||||
msgstr "Не удалось создать новый каталог кэша"
|
msgstr "Не удалось создать новый каталог кэша"
|
||||||
|
|
||||||
#: fix.go:98
|
|
||||||
msgid "Done"
|
|
||||||
msgstr "Сделано"
|
|
||||||
|
|
||||||
#: gen.go:34
|
#: gen.go:34
|
||||||
msgid "Generate a ALR script from a template"
|
msgid "Generate a ALR script from a template"
|
||||||
msgstr "Генерация скрипта ALR из шаблона"
|
msgstr "Генерация скрипта ALR из шаблона"
|
||||||
@ -322,15 +326,19 @@ msgstr "%s %s загружается — %s/с\n"
|
|||||||
msgid "ERROR"
|
msgid "ERROR"
|
||||||
msgstr "ОШИБКА"
|
msgstr "ОШИБКА"
|
||||||
|
|
||||||
#: internal/utils/cmd.go:86
|
#: internal/utils/cmd.go:87
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Error dropping capabilities"
|
msgid "Error dropping capabilities"
|
||||||
msgstr "Ошибка при открытии базы данных"
|
msgstr "Ошибка при открытии базы данных"
|
||||||
|
|
||||||
#: internal/utils/cmd.go:93
|
#: internal/utils/cmd.go:94
|
||||||
msgid "You need to be root to perform this action"
|
msgid "You need to be root to perform this action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: internal/utils/cmd.go:136
|
||||||
|
msgid "You need to be a %s member to perform this action"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: list.go:41
|
#: list.go:41
|
||||||
msgid "List ALR repo packages"
|
msgid "List ALR repo packages"
|
||||||
msgstr "Список пакетов репозитория ALR"
|
msgstr "Список пакетов репозитория ALR"
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
||||||
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/constants"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetUidGidAlrUserString() (string, string, error) {
|
func GetUidGidAlrUserString() (string, string, error) {
|
||||||
@ -111,13 +112,13 @@ func EnuseIsAlrUser() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func EnuseIsWheelMember() error {
|
func EnuseIsPrivilegedGroupMember() error {
|
||||||
currentUser, err := user.Current()
|
currentUser, err := user.Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
group, err := user.LookupGroup("wheel")
|
group, err := user.LookupGroup(constants.PrivilegedGroup)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -132,7 +133,7 @@ func EnuseIsWheelMember() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return errors.New("looks like is not wheel member")
|
return cliutils.FormatCliExit(gotext.Get("You need to be a %s member to perform this action", constants.PrivilegedGroup), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func EscalateToRootGid() error {
|
func EscalateToRootGid() error {
|
||||||
|
Loading…
Reference in New Issue
Block a user