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