forked from Plemya-x/ALR
wip
This commit is contained in:
parent
613dc41fdf
commit
fe3acf5b85
58
build.go
58
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"))
|
||||
@ -126,14 +123,7 @@ func BuildCmd() *cli.Command {
|
||||
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,
|
||||
},
|
||||
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 != "" {
|
||||
@ -161,14 +155,7 @@ 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,
|
||||
},
|
||||
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))
|
||||
|
@ -31,7 +31,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"
|
||||
)
|
||||
|
||||
@ -69,6 +68,7 @@ func InstallCmd() *cli.Command {
|
||||
WithConfig().
|
||||
WithDB().
|
||||
WithReposNoPull().
|
||||
WithDistroInfo().
|
||||
Build()
|
||||
if err != nil {
|
||||
return err
|
||||
@ -93,11 +93,6 @@ func InstallCmd() *cli.Command {
|
||||
return err
|
||||
}
|
||||
|
||||
info, err := distro.ParseOSRelease(ctx)
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error parsing os release"), err)
|
||||
}
|
||||
|
||||
err = builder.InstallPkgs(
|
||||
ctx,
|
||||
&build.BuildArgs{
|
||||
@ -105,7 +100,7 @@ func InstallCmd() *cli.Command {
|
||||
Clean: c.Bool("clean"),
|
||||
Interactive: c.Bool("interactive"),
|
||||
},
|
||||
Info: info,
|
||||
Info: deps.Info,
|
||||
PkgFormat_: build.GetPkgFormat(mgr),
|
||||
},
|
||||
args.Slice(),
|
||||
|
@ -26,6 +26,8 @@ import (
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
||||
"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"
|
||||
)
|
||||
|
||||
@ -33,6 +35,8 @@ type AppDeps struct {
|
||||
Cfg *config.ALRConfig
|
||||
DB *db.Database
|
||||
Repos *repos.Repos
|
||||
Info *distro.OSRelease
|
||||
Manager manager.Manager
|
||||
}
|
||||
|
||||
func (d *AppDeps) Defer() {
|
||||
@ -138,6 +142,32 @@ func (b *AppBuilder) withRepos(enablePull, forcePull bool) *AppBuilder {
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *AppBuilder) WithDistroInfo() *AppBuilder {
|
||||
if b.err != nil {
|
||||
return b
|
||||
}
|
||||
|
||||
b.deps.Info, b.err = distro.ParseOSRelease(b.ctx)
|
||||
if b.err != nil {
|
||||
b.err = cliutils.FormatCliExit(gotext.Get("Error parsing os release"), b.err)
|
||||
}
|
||||
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *AppBuilder) WithManager() *AppBuilder {
|
||||
if b.err != nil {
|
||||
return b
|
||||
}
|
||||
|
||||
mgr := manager.Detect()
|
||||
if mgr == nil {
|
||||
b.err = cliutils.FormatCliExit(gotext.Get("Unable to detect a supported package manager on the system"), nil)
|
||||
}
|
||||
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *AppBuilder) Build() (*AppDeps, error) {
|
||||
if b.err != nil {
|
||||
return nil, b.err
|
||||
|
@ -9,60 +9,52 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: build.go:44
|
||||
#: build.go:42
|
||||
msgid "Build a local package"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:50
|
||||
#: build.go:48
|
||||
msgid "Path to the build script"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:55
|
||||
#: build.go:53
|
||||
msgid "Specify subpackage in script (for multi package script only)"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:60
|
||||
#: build.go:58
|
||||
msgid "Name of the package to build and its repo (example: default/go-bin)"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:65
|
||||
#: build.go:63
|
||||
msgid ""
|
||||
"Build package from scratch even if there's an already built package available"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:75
|
||||
#: build.go:73
|
||||
msgid "Error getting working directory"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:103
|
||||
msgid "Unable to detect a supported package manager on the system"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:109
|
||||
msgid "Error parsing os release"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:121
|
||||
#: build.go:118
|
||||
msgid "Cannot get absolute script path"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:153
|
||||
#: build.go:148
|
||||
msgid "Package not found"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:174
|
||||
#: build.go:161
|
||||
msgid "Nothing to build"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:212
|
||||
#: build.go:199
|
||||
msgid "Error building package"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:220
|
||||
#: build.go:206
|
||||
msgid "Error moving the package"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:224
|
||||
#: build.go:210
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
@ -158,39 +150,47 @@ msgstr ""
|
||||
msgid "Error encoding script variables"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:41
|
||||
#: install.go:40
|
||||
msgid "Install a new package"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:59
|
||||
#: install.go:58
|
||||
msgid "Command install expected at least 1 argument, got %d"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:63 install.go:172 install.go:222
|
||||
msgid "Unable to detect a supported package manager on the system"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:88
|
||||
msgid "Error pulling repositories"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:159
|
||||
#: install.go:109
|
||||
msgid "Error parsing os release"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:154
|
||||
msgid "Remove an installed package"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:181
|
||||
#: install.go:176
|
||||
msgid "Error listing installed packages"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:222
|
||||
#: install.go:217
|
||||
msgid "Command remove expected at least 1 argument, got %d"
|
||||
msgstr ""
|
||||
|
||||
#: install.go:235
|
||||
#: install.go:230
|
||||
msgid "Error removing packages"
|
||||
msgstr ""
|
||||
|
||||
#: internal/cliutils/app_builder/builder.go:71
|
||||
#: internal/cliutils/app_builder/builder.go:75
|
||||
msgid "Error loading config"
|
||||
msgstr ""
|
||||
|
||||
#: internal/cliutils/app_builder/builder.go:92
|
||||
#: internal/cliutils/app_builder/builder.go:96
|
||||
msgid "Error initialization database"
|
||||
msgstr ""
|
||||
|
||||
@ -507,18 +507,18 @@ msgstr ""
|
||||
msgid "Error executing template"
|
||||
msgstr ""
|
||||
|
||||
#: upgrade.go:49
|
||||
#: upgrade.go:48
|
||||
msgid "Upgrade all installed packages"
|
||||
msgstr ""
|
||||
|
||||
#: upgrade.go:103
|
||||
#: upgrade.go:100
|
||||
msgid "Error pulling repos"
|
||||
msgstr ""
|
||||
|
||||
#: upgrade.go:109 upgrade.go:126
|
||||
#: upgrade.go:106 upgrade.go:123
|
||||
msgid "Error checking for updates"
|
||||
msgstr ""
|
||||
|
||||
#: upgrade.go:129
|
||||
#: upgrade.go:126
|
||||
msgid "There is nothing to do."
|
||||
msgstr ""
|
||||
|
@ -16,61 +16,53 @@ msgstr ""
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Gtranslator 47.1\n"
|
||||
|
||||
#: build.go:44
|
||||
#: build.go:42
|
||||
msgid "Build a local package"
|
||||
msgstr "Сборка локального пакета"
|
||||
|
||||
#: build.go:50
|
||||
#: build.go:48
|
||||
msgid "Path to the build script"
|
||||
msgstr "Путь к скрипту сборки"
|
||||
|
||||
#: build.go:55
|
||||
#: build.go:53
|
||||
msgid "Specify subpackage in script (for multi package script only)"
|
||||
msgstr "Укажите подпакет в скрипте (только для многопакетного скрипта)"
|
||||
|
||||
#: build.go:60
|
||||
#: build.go:58
|
||||
msgid "Name of the package to build and its repo (example: default/go-bin)"
|
||||
msgstr "Имя пакета для сборки и его репозиторий (пример: default/go-bin)"
|
||||
|
||||
#: build.go:65
|
||||
#: build.go:63
|
||||
msgid ""
|
||||
"Build package from scratch even if there's an already built package available"
|
||||
msgstr "Создайте пакет с нуля, даже если уже имеется готовый пакет"
|
||||
|
||||
#: build.go:75
|
||||
#: build.go:73
|
||||
msgid "Error getting working directory"
|
||||
msgstr "Ошибка при получении рабочего каталога"
|
||||
|
||||
#: build.go:103
|
||||
msgid "Unable to detect a supported package manager on the system"
|
||||
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
||||
|
||||
#: build.go:109
|
||||
msgid "Error parsing os release"
|
||||
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
||||
|
||||
#: build.go:121
|
||||
#: build.go:118
|
||||
msgid "Cannot get absolute script path"
|
||||
msgstr ""
|
||||
|
||||
#: build.go:153
|
||||
#: build.go:148
|
||||
msgid "Package not found"
|
||||
msgstr "Пакет не найден"
|
||||
|
||||
#: build.go:174
|
||||
#: build.go:161
|
||||
#, fuzzy
|
||||
msgid "Nothing to build"
|
||||
msgstr "Исполнение build()"
|
||||
|
||||
#: build.go:212
|
||||
#: build.go:199
|
||||
msgid "Error building package"
|
||||
msgstr "Ошибка при сборке пакета"
|
||||
|
||||
#: build.go:220
|
||||
#: build.go:206
|
||||
msgid "Error moving the package"
|
||||
msgstr "Ошибка при перемещении пакета"
|
||||
|
||||
#: build.go:224
|
||||
#: build.go:210
|
||||
msgid "Done"
|
||||
msgstr "Сделано"
|
||||
|
||||
@ -171,40 +163,48 @@ msgstr "Ошибка устранения переорпеделений"
|
||||
msgid "Error encoding script variables"
|
||||
msgstr "Ошибка кодирования переменных скрита"
|
||||
|
||||
#: install.go:41
|
||||
#: install.go:40
|
||||
msgid "Install a new package"
|
||||
msgstr "Установить новый пакет"
|
||||
|
||||
#: install.go:59
|
||||
#: install.go:58
|
||||
msgid "Command install expected at least 1 argument, got %d"
|
||||
msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d"
|
||||
|
||||
#: install.go:63 install.go:172 install.go:222
|
||||
msgid "Unable to detect a supported package manager on the system"
|
||||
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
||||
|
||||
#: install.go:88
|
||||
msgid "Error pulling repositories"
|
||||
msgstr "Ошибка при извлечении репозиториев"
|
||||
|
||||
#: install.go:159
|
||||
#: install.go:109
|
||||
msgid "Error parsing os release"
|
||||
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
||||
|
||||
#: install.go:154
|
||||
msgid "Remove an installed package"
|
||||
msgstr "Удалить установленный пакет"
|
||||
|
||||
#: install.go:181
|
||||
#: install.go:176
|
||||
msgid "Error listing installed packages"
|
||||
msgstr "Ошибка при составлении списка установленных пакетов"
|
||||
|
||||
#: install.go:222
|
||||
#: install.go:217
|
||||
msgid "Command remove expected at least 1 argument, got %d"
|
||||
msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d"
|
||||
|
||||
#: install.go:235
|
||||
#: install.go:230
|
||||
msgid "Error removing packages"
|
||||
msgstr "Ошибка при удалении пакетов"
|
||||
|
||||
#: internal/cliutils/app_builder/builder.go:71
|
||||
#: internal/cliutils/app_builder/builder.go:75
|
||||
#, fuzzy
|
||||
msgid "Error loading config"
|
||||
msgstr "Ошибка при кодировании конфигурации"
|
||||
|
||||
#: internal/cliutils/app_builder/builder.go:92
|
||||
#: internal/cliutils/app_builder/builder.go:96
|
||||
msgid "Error initialization database"
|
||||
msgstr "Ошибка инициализации базы данных"
|
||||
|
||||
@ -533,19 +533,19 @@ msgstr "Ошибка при разборе шаблона"
|
||||
msgid "Error executing template"
|
||||
msgstr "Ошибка при выполнении шаблона"
|
||||
|
||||
#: upgrade.go:49
|
||||
#: upgrade.go:48
|
||||
msgid "Upgrade all installed packages"
|
||||
msgstr "Обновить все установленные пакеты"
|
||||
|
||||
#: upgrade.go:103
|
||||
#: upgrade.go:100
|
||||
msgid "Error pulling repos"
|
||||
msgstr "Ошибка при извлечении репозиториев"
|
||||
|
||||
#: upgrade.go:109 upgrade.go:126
|
||||
#: upgrade.go:106 upgrade.go:123
|
||||
msgid "Error checking for updates"
|
||||
msgstr "Ошибка при проверке обновлений"
|
||||
|
||||
#: upgrade.go:129
|
||||
#: upgrade.go:126
|
||||
msgid "There is nothing to do."
|
||||
msgstr "Здесь нечего делать."
|
||||
|
||||
|
@ -23,7 +23,6 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/leonelquinteros/gotext"
|
||||
"github.com/urfave/cli/v2"
|
||||
@ -92,12 +91,10 @@ func UpgradeCmd() *cli.Command {
|
||||
|
||||
mgr := manager.Detect()
|
||||
if mgr == nil {
|
||||
slog.Error(gotext.Get("Unable to detect a supported package manager on the system"))
|
||||
os.Exit(1)
|
||||
return cliutils.FormatCliExit(gotext.Get("Unable to detect a supported package manager on the system"), nil)
|
||||
}
|
||||
|
||||
if cfg.AutoPull() {
|
||||
slog.Debug("autopull")
|
||||
err = rs.Pull(ctx, cfg.Repos())
|
||||
if err != nil {
|
||||
return cliutils.FormatCliExit(gotext.Get("Error pulling repos"), err)
|
||||
|
Loading…
Reference in New Issue
Block a user