forked from Plemya-x/ALR
fix non-interactive install and add fallback in HandleExitCoder
This commit is contained in:
parent
83b8f3b047
commit
0d917190ab
@ -31,10 +31,21 @@ func TestE2EIssue32Interactive(t *testing.T) {
|
||||
"issue-32-interactive",
|
||||
COMMON_SYSTEMS,
|
||||
func(t *testing.T, r e2e.Runnable) {
|
||||
err := r.Exec(e2e.NewCommand(
|
||||
assert.NoError(t, r.Exec(e2e.NewCommand(
|
||||
"sudo", "alr", "--interactive=false", "remove", "ca-certificates",
|
||||
))
|
||||
assert.NoError(t, err)
|
||||
)))
|
||||
|
||||
assert.NoError(t, r.Exec(e2e.NewCommand(
|
||||
"sudo", "alr", "--interactive=false", "remove", "openssl",
|
||||
)))
|
||||
|
||||
assert.NoError(t, r.Exec(e2e.NewCommand(
|
||||
"alr", "fix",
|
||||
)))
|
||||
|
||||
assert.NoError(t, r.Exec(e2e.NewCommand(
|
||||
"sudo", "alr", "--interactive=false", "install", "ca-certificates",
|
||||
)))
|
||||
},
|
||||
)
|
||||
}
|
||||
|
@ -46,6 +46,9 @@ func HandleExitCoder(err error) {
|
||||
cli.OsExiter(exitErr.ExitCode())
|
||||
return
|
||||
}
|
||||
|
||||
slog.Error(err.Error())
|
||||
cli.OsExiter(1)
|
||||
}
|
||||
|
||||
func FormatCliExit(msg string, err error) cli.ExitCoder {
|
||||
|
@ -347,19 +347,19 @@ msgstr ""
|
||||
msgid "Error while running app"
|
||||
msgstr ""
|
||||
|
||||
#: pkg/build/build.go:394
|
||||
#: pkg/build/build.go:395
|
||||
msgid "Building package"
|
||||
msgstr ""
|
||||
|
||||
#: pkg/build/build.go:423
|
||||
#: pkg/build/build.go:424
|
||||
msgid "The checksums array must be the same length as sources"
|
||||
msgstr ""
|
||||
|
||||
#: pkg/build/build.go:454
|
||||
#: pkg/build/build.go:455
|
||||
msgid "Downloading sources"
|
||||
msgstr ""
|
||||
|
||||
#: pkg/build/build.go:543
|
||||
#: pkg/build/build.go:549
|
||||
msgid "Installing dependencies"
|
||||
msgstr ""
|
||||
|
||||
|
@ -363,19 +363,19 @@ msgstr "Показать справку"
|
||||
msgid "Error while running app"
|
||||
msgstr "Ошибка при запуске приложения"
|
||||
|
||||
#: pkg/build/build.go:394
|
||||
#: pkg/build/build.go:395
|
||||
msgid "Building package"
|
||||
msgstr "Сборка пакета"
|
||||
|
||||
#: pkg/build/build.go:423
|
||||
#: pkg/build/build.go:424
|
||||
msgid "The checksums array must be the same length as sources"
|
||||
msgstr "Массив контрольных сумм должен быть той же длины, что и источники"
|
||||
|
||||
#: pkg/build/build.go:454
|
||||
#: pkg/build/build.go:455
|
||||
msgid "Downloading sources"
|
||||
msgstr "Скачивание источников"
|
||||
|
||||
#: pkg/build/build.go:543
|
||||
#: pkg/build/build.go:549
|
||||
msgid "Installing dependencies"
|
||||
msgstr "Установка зависимостей"
|
||||
|
||||
|
@ -35,6 +35,7 @@ import (
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/types"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/distro"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
|
||||
)
|
||||
|
||||
type BuildInput struct {
|
||||
@ -233,8 +234,8 @@ type CheckerExecutor interface {
|
||||
}
|
||||
|
||||
type InstallerExecutor interface {
|
||||
InstallLocal(paths []string) error
|
||||
Install(pkgs []string) error
|
||||
InstallLocal(paths []string, opts *manager.Opts) error
|
||||
Install(pkgs []string, opts *manager.Opts) error
|
||||
RemoveAlreadyInstalled(pkgs []string) ([]string, error)
|
||||
}
|
||||
|
||||
@ -521,7 +522,12 @@ func (b *Builder) InstallALRPackages(
|
||||
return err
|
||||
}
|
||||
|
||||
err = b.installerExecutor.InstallLocal(res.PackagePaths)
|
||||
err = b.installerExecutor.InstallLocal(
|
||||
res.PackagePaths,
|
||||
&manager.Opts{
|
||||
NoConfirm: !input.BuildOpts().Interactive,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -681,14 +687,18 @@ func (i *Builder) InstallPkgs(
|
||||
}
|
||||
|
||||
if len(builtPaths) > 0 {
|
||||
err = i.installerExecutor.InstallLocal(builtPaths)
|
||||
err = i.installerExecutor.InstallLocal(builtPaths, &manager.Opts{
|
||||
NoConfirm: !input.BuildOpts().Interactive,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if len(repoDeps) > 0 {
|
||||
err = i.installerExecutor.Install(repoDeps)
|
||||
err = i.installerExecutor.Install(repoDeps, &manager.Opts{
|
||||
NoConfirm: !input.BuildOpts().Interactive,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -28,12 +28,12 @@ func NewInstaller(mgr manager.Manager) *Installer {
|
||||
|
||||
type Installer struct{ mgr manager.Manager }
|
||||
|
||||
func (i *Installer) InstallLocal(paths []string) error {
|
||||
return i.mgr.InstallLocal(nil, paths...)
|
||||
func (i *Installer) InstallLocal(paths []string, opts *manager.Opts) error {
|
||||
return i.mgr.InstallLocal(opts, paths...)
|
||||
}
|
||||
|
||||
func (i *Installer) Install(pkgs []string) error {
|
||||
return i.mgr.Install(nil, pkgs...)
|
||||
func (i *Installer) Install(pkgs []string, opts *manager.Opts) error {
|
||||
return i.mgr.Install(opts, pkgs...)
|
||||
}
|
||||
|
||||
func (i *Installer) RemoveAlreadyInstalled(pkgs []string) ([]string, error) {
|
||||
|
@ -28,6 +28,7 @@ import (
|
||||
"github.com/hashicorp/go-plugin"
|
||||
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/logger"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
|
||||
)
|
||||
|
||||
type InstallerPlugin struct {
|
||||
@ -42,21 +43,31 @@ type InstallerRPCServer struct {
|
||||
Impl InstallerExecutor
|
||||
}
|
||||
|
||||
func (r *InstallerRPC) InstallLocal(paths []string) error {
|
||||
return r.client.Call("Plugin.InstallLocal", paths, nil)
|
||||
type InstallArgs struct {
|
||||
PackagesOrPaths []string
|
||||
Opts *manager.Opts
|
||||
}
|
||||
|
||||
func (s *InstallerRPCServer) InstallLocal(paths []string, reply *struct{}) error {
|
||||
return s.Impl.InstallLocal(paths)
|
||||
func (r *InstallerRPC) InstallLocal(paths []string, opts *manager.Opts) error {
|
||||
return r.client.Call("Plugin.InstallLocal", &InstallArgs{
|
||||
PackagesOrPaths: paths,
|
||||
Opts: opts,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
func (r *InstallerRPC) Install(pkgs []string) error {
|
||||
return r.client.Call("Plugin.Install", pkgs, nil)
|
||||
func (s *InstallerRPCServer) InstallLocal(args *InstallArgs, reply *struct{}) error {
|
||||
return s.Impl.InstallLocal(args.PackagesOrPaths, args.Opts)
|
||||
}
|
||||
|
||||
func (s *InstallerRPCServer) Install(pkgs []string, reply *struct{}) error {
|
||||
slog.Debug("install", "pkgs", pkgs)
|
||||
return s.Impl.Install(pkgs)
|
||||
func (r *InstallerRPC) Install(pkgs []string, opts *manager.Opts) error {
|
||||
return r.client.Call("Plugin.Install", &InstallArgs{
|
||||
PackagesOrPaths: pkgs,
|
||||
Opts: opts,
|
||||
}, nil)
|
||||
}
|
||||
|
||||
func (s *InstallerRPCServer) Install(args *InstallArgs, reply *struct{}) error {
|
||||
return s.Impl.Install(args.PackagesOrPaths, args.Opts)
|
||||
}
|
||||
|
||||
func (r *InstallerRPC) RemoveAlreadyInstalled(paths []string) ([]string, error) {
|
||||
|
Loading…
Reference in New Issue
Block a user