fix non-interactive install and add fallback in HandleExitCoder
This commit is contained in:
		| @@ -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) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user