diff --git a/commands/errors.go b/arduino/errors.go similarity index 96% rename from commands/errors.go rename to arduino/errors.go index 67d1aa6a42d..2b4e34dba5b 100644 --- a/commands/errors.go +++ b/arduino/errors.go @@ -13,16 +13,19 @@ // Arduino software without disclosing the source code of your own applications. // To purchase a commercial license, send an email to license@arduino.cc. -package commands +package arduino import ( "fmt" + "github.com/arduino/arduino-cli/i18n" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) +var tr = i18n.Tr + func composeErrorMsg(msg string, cause error) string { if cause == nil { return msg @@ -282,41 +285,41 @@ func (e *MissingPlatformPropertyError) ToRPCStatus() *status.Status { return status.New(codes.FailedPrecondition, e.Error()) } -// PlatformNotFound is returned when a platform is not found -type PlatformNotFound struct { +// PlatformNotFoundError is returned when a platform is not found +type PlatformNotFoundError struct { Platform string Cause error } -func (e *PlatformNotFound) Error() string { +func (e *PlatformNotFoundError) Error() string { return composeErrorMsg(tr("Platform '%s' not found", e.Platform), e.Cause) } // ToRPCStatus converts the error into a *status.Status -func (e *PlatformNotFound) ToRPCStatus() *status.Status { +func (e *PlatformNotFoundError) ToRPCStatus() *status.Status { return status.New(codes.FailedPrecondition, e.Error()) } -func (e *PlatformNotFound) Unwrap() error { +func (e *PlatformNotFoundError) Unwrap() error { return e.Cause } -// LibraryNotFound is returned when a platform is not found -type LibraryNotFound struct { +// LibraryNotFoundError is returned when a platform is not found +type LibraryNotFoundError struct { Library string Cause error } -func (e *LibraryNotFound) Error() string { +func (e *LibraryNotFoundError) Error() string { return composeErrorMsg(tr("Library '%s' not found", e.Library), e.Cause) } // ToRPCStatus converts the error into a *status.Status -func (e *LibraryNotFound) ToRPCStatus() *status.Status { +func (e *LibraryNotFoundError) ToRPCStatus() *status.Status { return status.New(codes.FailedPrecondition, e.Error()) } -func (e *LibraryNotFound) Unwrap() error { +func (e *LibraryNotFoundError) Unwrap() error { return e.Cause } diff --git a/cli/core/upgrade.go b/cli/core/upgrade.go index 7c95e59aaae..b724a289659 100644 --- a/cli/core/upgrade.go +++ b/cli/core/upgrade.go @@ -21,12 +21,12 @@ import ( "fmt" "os" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/cli/arguments" "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cli/cli/instance" "github.com/arduino/arduino-cli/cli/output" - "github.com/arduino/arduino-cli/commands" "github.com/arduino/arduino-cli/commands/core" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/sirupsen/logrus" @@ -97,7 +97,7 @@ func runUpgradeCommand(cmd *cobra.Command, args []string) { } if _, err := core.PlatformUpgrade(context.Background(), r, output.ProgressBar(), output.TaskProgress()); err != nil { - if errors.Is(err, &commands.PlatformAlreadyAtTheLatestVersionError{}) { + if errors.Is(err, &arduino.PlatformAlreadyAtTheLatestVersionError{}) { feedback.Print(err.Error()) continue } diff --git a/commands/board/attach.go b/commands/board/attach.go index f3415c8eb6e..14df75b3aeb 100644 --- a/commands/board/attach.go +++ b/commands/board/attach.go @@ -22,6 +22,7 @@ import ( "strings" "time" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/arduino/sketch" @@ -38,7 +39,7 @@ var tr = i18n.Tr func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.TaskProgressCB) (*rpc.BoardAttachResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } var sketchPath *paths.Path if req.GetSketchPath() != "" { @@ -46,7 +47,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta } sk, err := sketch.New(sketchPath) if err != nil { - return nil, &commands.CantOpenSketchError{Cause: err} + return nil, &arduino.CantOpenSketchError{Cause: err} } boardURI := req.GetBoardUri() @@ -62,7 +63,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta } else { deviceURI, err := url.Parse(boardURI) if err != nil { - return nil, &commands.InvalidArgumentError{Message: tr("Invalid Device URL format"), Cause: err} + return nil, &arduino.InvalidArgumentError{Message: tr("Invalid Device URL format"), Cause: err} } var findBoardFunc func(*packagemanager.PackageManager, *discovery.Monitor, *url.URL) *cores.Board @@ -72,7 +73,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta case "http", "https", "tcp", "udp": findBoardFunc = findNetworkConnectedBoard default: - return nil, &commands.InvalidArgumentError{Message: tr("Invalid device port type provided")} + return nil, &arduino.InvalidArgumentError{Message: tr("Invalid device port type provided")} } duration, err := time.ParseDuration(req.GetSearchTimeout()) @@ -88,7 +89,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta // TODO: Handle the case when no board is found. board := findBoardFunc(pm, monitor, deviceURI) if board == nil { - return nil, &commands.InvalidArgumentError{Message: tr("No supported board found at %s", deviceURI)} + return nil, &arduino.InvalidArgumentError{Message: tr("No supported board found at %s", deviceURI)} } taskCB(&rpc.TaskProgress{Name: tr("Board found: %s", board.Name())}) @@ -103,7 +104,7 @@ func Attach(ctx context.Context, req *rpc.BoardAttachRequest, taskCB commands.Ta err = sk.ExportMetadata() if err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Cannot export sketch metadata"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Cannot export sketch metadata"), Cause: err} } taskCB(&rpc.TaskProgress{Name: tr("Selected fqbn: %s", sk.Metadata.CPU.Fqbn), Completed: true}) return &rpc.BoardAttachResponse{}, nil diff --git a/commands/board/details.go b/commands/board/details.go index c22f7f2526e..220736dc7dd 100644 --- a/commands/board/details.go +++ b/commands/board/details.go @@ -18,6 +18,7 @@ package board import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -28,17 +29,17 @@ import ( func Details(ctx context.Context, req *rpc.BoardDetailsRequest) (*rpc.BoardDetailsResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } fqbn, err := cores.ParseFQBN(req.GetFqbn()) if err != nil { - return nil, &commands.InvalidFQBNError{Cause: err} + return nil, &arduino.InvalidFQBNError{Cause: err} } boardPackage, boardPlatform, board, boardProperties, boardRefPlatform, err := pm.ResolveFQBN(fqbn) if err != nil { - return nil, &commands.UnknownFQBNError{Cause: err} + return nil, &arduino.UnknownFQBNError{Cause: err} } details := &rpc.BoardDetailsResponse{} diff --git a/commands/board/list.go b/commands/board/list.go index de010bef451..fcfec9296b2 100644 --- a/commands/board/list.go +++ b/commands/board/list.go @@ -25,6 +25,7 @@ import ( "strings" "time" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/arduino/discovery" "github.com/arduino/arduino-cli/commands" @@ -143,7 +144,7 @@ func identify(pm *packagemanager.PackageManager, port *discovery.Port) ([]*rpc.B logrus.Debug("Board not recognized") } else if err != nil { // this is bad, bail out - return nil, &commands.UnavailableError{Message: tr("Error getting board info from Arduino Cloud")} + return nil, &arduino.UnavailableError{Message: tr("Error getting board info from Arduino Cloud")} } // add a DetectedPort entry in any case: the `Boards` field will @@ -188,15 +189,15 @@ func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, e error) { pm := commands.GetPackageManager(req.GetInstance().Id) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } dm := pm.DiscoveryManager() if errs := dm.RunAll(); len(errs) > 0 { - return nil, &commands.UnavailableError{Message: tr("Error starting board discoveries"), Cause: fmt.Errorf("%v", errs)} + return nil, &arduino.UnavailableError{Message: tr("Error starting board discoveries"), Cause: fmt.Errorf("%v", errs)} } if errs := dm.StartAll(); len(errs) > 0 { - return nil, &commands.UnavailableError{Message: tr("Error starting board discoveries"), Cause: fmt.Errorf("%v", errs)} + return nil, &arduino.UnavailableError{Message: tr("Error starting board discoveries"), Cause: fmt.Errorf("%v", errs)} } defer func() { if errs := dm.StopAll(); len(errs) > 0 { @@ -208,7 +209,7 @@ func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, e error) { retVal := []*rpc.DetectedPort{} ports, errs := pm.DiscoveryManager().List() if len(errs) > 0 { - return nil, &commands.UnavailableError{Message: tr("Error getting board list"), Cause: fmt.Errorf("%v", errs)} + return nil, &arduino.UnavailableError{Message: tr("Error getting board list"), Cause: fmt.Errorf("%v", errs)} } for _, port := range ports { boards, err := identify(pm, port) @@ -237,7 +238,7 @@ func Watch(instanceID int32, interrupt <-chan bool) (<-chan *rpc.BoardListWatchR runErrs := dm.RunAll() if len(runErrs) == len(dm.IDs()) { // All discoveries failed to run, we can't do anything - return nil, &commands.UnavailableError{Message: tr("Error starting board discoveries"), Cause: fmt.Errorf("%v", runErrs)} + return nil, &arduino.UnavailableError{Message: tr("Error starting board discoveries"), Cause: fmt.Errorf("%v", runErrs)} } eventsChan, errs := dm.StartSyncAll() diff --git a/commands/board/listall.go b/commands/board/listall.go index 0a80a43ac16..4143c51f844 100644 --- a/commands/board/listall.go +++ b/commands/board/listall.go @@ -19,6 +19,7 @@ import ( "context" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/utils" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -28,7 +29,7 @@ import ( func ListAll(ctx context.Context, req *rpc.BoardListAllRequest) (*rpc.BoardListAllResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } searchArgs := strings.Join(req.GetSearchArgs(), " ") diff --git a/commands/board/search.go b/commands/board/search.go index c04c65b4d59..658e71f3105 100644 --- a/commands/board/search.go +++ b/commands/board/search.go @@ -20,6 +20,7 @@ import ( "sort" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/utils" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -32,7 +33,7 @@ import ( func Search(ctx context.Context, req *rpc.BoardSearchRequest) (*rpc.BoardSearchResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } res := &rpc.BoardSearchResponse{Boards: []*rpc.BoardListItem{}} diff --git a/commands/bundled_tools.go b/commands/bundled_tools.go index 3a2df0df9fd..3322dc9bcfe 100644 --- a/commands/bundled_tools.go +++ b/commands/bundled_tools.go @@ -16,6 +16,7 @@ package commands import ( + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -49,7 +50,7 @@ func InstallToolRelease(pm *packagemanager.PackageManager, toolRelease *cores.To err := pm.InstallTool(toolRelease) if err != nil { log.WithError(err).Warn("Cannot install tool") - return &FailedInstallError{Message: tr("Cannot install tool %s", toolRelease), Cause: err} + return &arduino.FailedInstallError{Message: tr("Cannot install tool %s", toolRelease), Cause: err} } log.Info("Tool installed") taskCB(&rpc.TaskProgress{Message: tr("%s installed", toolRelease), Completed: true}) diff --git a/commands/compile/compile.go b/commands/compile/compile.go index 3628b7bf319..a5bf230f4eb 100644 --- a/commands/compile/compile.go +++ b/commands/compile/compile.go @@ -17,13 +17,14 @@ package compile import ( "context" - "errors" + "fmt" "io" "path/filepath" "sort" "strconv" "strings" + "github.com/arduino/arduino-cli/arduino" bldr "github.com/arduino/arduino-cli/arduino/builder" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" @@ -89,17 +90,17 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } logrus.Tracef("Compile %s for %s started", req.GetSketchPath(), req.GetFqbn()) if req.GetSketchPath() == "" { - return nil, &commands.MissingSketchPathError{} + return nil, &arduino.MissingSketchPathError{} } sketchPath := paths.New(req.GetSketchPath()) sk, err := sketch.New(sketchPath) if err != nil { - return nil, &commands.CantOpenSketchError{Cause: err} + return nil, &arduino.CantOpenSketchError{Cause: err} } fqbnIn := req.GetFqbn() @@ -107,11 +108,11 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream fqbnIn = sk.Metadata.CPU.Fqbn } if fqbnIn == "" { - return nil, &commands.MissingFQBNError{} + return nil, &arduino.MissingFQBNError{} } fqbn, err := cores.ParseFQBN(fqbnIn) if err != nil { - return nil, &commands.InvalidFQBNError{Cause: err} + return nil, &arduino.InvalidFQBNError{Cause: err} } targetPlatform := pm.FindPlatform(&packagemanager.PlatformReference{ @@ -124,7 +125,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream // "\"%[1]s:%[2]s\" platform is not installed, please install it by running \""+ // version.GetAppName()+" core install %[1]s:%[2]s\".", fqbn.Package, fqbn.PlatformArch) // feedback.Error(errorMessage) - return nil, &commands.PlatformNotFound{Platform: targetPlatform.String(), Cause: errors.New(tr("platform not installed"))} + return nil, &arduino.PlatformNotFoundError{Platform: targetPlatform.String(), Cause: fmt.Errorf(tr("platform not installed"))} } builderCtx := &types.Context{} @@ -147,7 +148,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream builderCtx.BuildPath = paths.New(req.GetBuildPath()).Canonical() } if err = builderCtx.BuildPath.MkdirAll(); err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Cannot create build directory"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Cannot create build directory"), Cause: err} } builderCtx.CompilationDatabase = bldr.NewCompilationDatabase( builderCtx.BuildPath.Join("compile_commands.json"), @@ -177,7 +178,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream builderCtx.BuildCachePath = paths.New(req.GetBuildCachePath()) err = builderCtx.BuildCachePath.MkdirAll() if err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Cannot create build cache directory"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Cannot create build cache directory"), Cause: err} } } @@ -222,20 +223,20 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream if req.GetShowProperties() { compileErr := builder.RunParseHardwareAndDumpBuildProperties(builderCtx) if compileErr != nil { - compileErr = &commands.CompileFailedError{Message: err.Error()} + compileErr = &arduino.CompileFailedError{Message: err.Error()} } return r, compileErr } else if req.GetPreprocess() { compileErr := builder.RunPreprocess(builderCtx) if compileErr != nil { - compileErr = &commands.CompileFailedError{Message: err.Error()} + compileErr = &arduino.CompileFailedError{Message: err.Error()} } return r, compileErr } // if it's a regular build, go on... if err := builder.RunBuilder(builderCtx); err != nil { - return r, &commands.CompileFailedError{Message: err.Error()} + return r, &arduino.CompileFailedError{Message: err.Error()} } // If the export directory is set we assume you want to export the binaries @@ -257,17 +258,17 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream } logrus.WithField("path", exportPath).Trace("Saving sketch to export path.") if err := exportPath.MkdirAll(); err != nil { - return r, &commands.PermissionDeniedError{Message: tr("Error creating output dir"), Cause: err} + return r, &arduino.PermissionDeniedError{Message: tr("Error creating output dir"), Cause: err} } // Copy all "sketch.ino.*" artifacts to the export directory baseName, ok := builderCtx.BuildProperties.GetOk("build.project_name") // == "sketch.ino" if !ok { - return r, &commands.MissingPlatformPropertyError{Property: "build.project_name"} + return r, &arduino.MissingPlatformPropertyError{Property: "build.project_name"} } buildFiles, err := builderCtx.BuildPath.ReadDir() if err != nil { - return r, &commands.PermissionDeniedError{Message: tr("Error reading build directory"), Cause: err} + return r, &arduino.PermissionDeniedError{Message: tr("Error reading build directory"), Cause: err} } buildFiles.FilterPrefix(baseName) for _, buildFile := range buildFiles { @@ -277,7 +278,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream WithField("dest", exportedFile). Trace("Copying artifact.") if err = buildFile.CopyTo(exportedFile); err != nil { - return r, &commands.PermissionDeniedError{Message: tr("Error copying output file %s", buildFile), Cause: err} + return r, &arduino.PermissionDeniedError{Message: tr("Error copying output file %s", buildFile), Cause: err} } } } @@ -286,7 +287,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream for _, lib := range builderCtx.ImportedLibraries { rpcLib, err := lib.ToRPCLibrary() if err != nil { - return r, &commands.PermissionDeniedError{Message: tr("Error getting information for library %s", lib.Name), Cause: err} + return r, &arduino.PermissionDeniedError{Message: tr("Error getting information for library %s", lib.Name), Cause: err} } importedLibs = append(importedLibs, rpcLib) } diff --git a/commands/core/download.go b/commands/core/download.go index d19ce52b098..2068945b6b4 100644 --- a/commands/core/download.go +++ b/commands/core/download.go @@ -19,6 +19,7 @@ import ( "context" "errors" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/commands" @@ -32,12 +33,12 @@ var tr = i18n.Tr func PlatformDownload(ctx context.Context, req *rpc.PlatformDownloadRequest, downloadCB commands.DownloadProgressCB) (*rpc.PlatformDownloadResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } version, err := commands.ParseVersion(req) if err != nil { - return nil, &commands.InvalidVersionError{Cause: err} + return nil, &arduino.InvalidVersionError{Cause: err} } ref := &packagemanager.PlatformReference{ @@ -47,7 +48,7 @@ func PlatformDownload(ctx context.Context, req *rpc.PlatformDownloadRequest, dow } platform, tools, err := pm.FindPlatformReleaseDependencies(ref) if err != nil { - return nil, &commands.PlatformNotFound{Platform: ref.String(), Cause: err} + return nil, &arduino.PlatformNotFoundError{Platform: ref.String(), Cause: err} } if err := downloadPlatform(pm, platform, downloadCB); err != nil { @@ -67,11 +68,11 @@ func downloadPlatform(pm *packagemanager.PackageManager, platformRelease *cores. // Download platform config, err := commands.GetDownloaderConfig() if err != nil { - return &commands.FailedDownloadError{Message: tr("Error downloading platform %s", platformRelease), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading platform %s", platformRelease), Cause: err} } resp, err := pm.DownloadPlatformRelease(platformRelease, config) if err != nil { - return &commands.FailedDownloadError{Message: tr("Error downloading platform %s", platformRelease), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading platform %s", platformRelease), Cause: err} } return commands.Download(resp, platformRelease.String(), downloadCB) } @@ -79,13 +80,13 @@ func downloadPlatform(pm *packagemanager.PackageManager, platformRelease *cores. func downloadTool(pm *packagemanager.PackageManager, tool *cores.ToolRelease, downloadCB commands.DownloadProgressCB) error { // Check if tool has a flavor available for the current OS if tool.GetCompatibleFlavour() == nil { - return &commands.FailedDownloadError{ + return &arduino.FailedDownloadError{ Message: tr("Error downloading tool %s", tool), Cause: errors.New(tr("no versions available for the current OS", tool))} } if err := commands.DownloadToolRelease(pm, tool, downloadCB); err != nil { - return &commands.FailedDownloadError{Message: tr("Error downloading tool %s", tool), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading tool %s", tool), Cause: err} } return nil diff --git a/commands/core/install.go b/commands/core/install.go index 070b789af29..185e687bee4 100644 --- a/commands/core/install.go +++ b/commands/core/install.go @@ -18,6 +18,7 @@ package core import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/commands" @@ -30,12 +31,12 @@ func PlatformInstall(ctx context.Context, req *rpc.PlatformInstallRequest, pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } version, err := commands.ParseVersion(req) if err != nil { - return nil, &commands.InvalidVersionError{Cause: err} + return nil, &arduino.InvalidVersionError{Cause: err} } ref := &packagemanager.PlatformReference{ @@ -45,7 +46,7 @@ func PlatformInstall(ctx context.Context, req *rpc.PlatformInstallRequest, } platform, tools, err := pm.FindPlatformReleaseDependencies(ref) if err != nil { - return nil, &commands.PlatformNotFound{Platform: ref.String(), Cause: err} + return nil, &arduino.PlatformNotFoundError{Platform: ref.String(), Cause: err} } err = installPlatform(pm, platform, tools, downloadCB, taskCB, req.GetSkipPostInstall()) @@ -123,14 +124,14 @@ func installPlatform(pm *packagemanager.PackageManager, var err error _, installedTools, err = pm.FindPlatformReleaseDependencies(platformRef) if err != nil { - return &commands.NotFoundError{Message: tr("Can't find dependencies for platform %s", platformRef), Cause: err} + return &arduino.NotFoundError{Message: tr("Can't find dependencies for platform %s", platformRef), Cause: err} } } // Install if err := pm.InstallPlatform(platformRelease); err != nil { log.WithError(err).Error("Cannot install platform") - return &commands.FailedInstallError{Message: tr("Cannot install platform"), Cause: err} + return &arduino.FailedInstallError{Message: tr("Cannot install platform"), Cause: err} } // If upgrading remove previous release @@ -148,7 +149,7 @@ func installPlatform(pm *packagemanager.PackageManager, taskCB(&rpc.TaskProgress{Message: tr("Error rolling-back changes: %s", err)}) } - return &commands.FailedInstallError{Message: tr("Cannot upgrade platform"), Cause: uninstallErr} + return &arduino.FailedInstallError{Message: tr("Cannot upgrade platform"), Cause: uninstallErr} } // Uninstall unused tools diff --git a/commands/core/list.go b/commands/core/list.go index 63fc813b9d7..d3d8fb8e00a 100644 --- a/commands/core/list.go +++ b/commands/core/list.go @@ -16,10 +16,11 @@ package core import ( - "errors" + "fmt" "sort" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" ) @@ -29,7 +30,7 @@ import ( func GetPlatforms(req *rpc.PlatformListRequest) ([]*rpc.Platform, error) { packageManager := commands.GetPackageManager(req.GetInstance().Id) if packageManager == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } res := []*rpc.Platform{} @@ -54,7 +55,7 @@ func GetPlatforms(req *rpc.PlatformListRequest) ([]*rpc.Platform, error) { if platformRelease != nil { latest := platform.GetLatestRelease() if latest == nil { - return nil, &commands.PlatformNotFound{Platform: platform.String(), Cause: errors.New(tr("the platform has no releases"))} + return nil, &arduino.PlatformNotFoundError{Platform: platform.String(), Cause: fmt.Errorf(tr("the platform has no releases"))} } if req.UpdatableOnly { diff --git a/commands/core/search.go b/commands/core/search.go index 97f0f566cc5..1db229bf57c 100644 --- a/commands/core/search.go +++ b/commands/core/search.go @@ -20,6 +20,7 @@ import ( "sort" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/utils" "github.com/arduino/arduino-cli/commands" @@ -32,7 +33,7 @@ func PlatformSearch(req *rpc.PlatformSearchRequest) (*rpc.PlatformSearchResponse allVersions := req.AllVersions pm := commands.GetPackageManager(req.Instance.Id) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } res := []*cores.PlatformRelease{} diff --git a/commands/core/uninstall.go b/commands/core/uninstall.go index 1df385a02e5..ceae27432dd 100644 --- a/commands/core/uninstall.go +++ b/commands/core/uninstall.go @@ -18,6 +18,7 @@ package core import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/commands" @@ -28,7 +29,7 @@ import ( func PlatformUninstall(ctx context.Context, req *rpc.PlatformUninstallRequest, taskCB commands.TaskProgressCB) (*rpc.PlatformUninstallResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } ref := &packagemanager.PlatformReference{ @@ -38,18 +39,18 @@ func PlatformUninstall(ctx context.Context, req *rpc.PlatformUninstallRequest, t if ref.PlatformVersion == nil { platform := pm.FindPlatform(ref) if platform == nil { - return nil, &commands.PlatformNotFound{Platform: ref.String()} + return nil, &arduino.PlatformNotFoundError{Platform: ref.String()} } platformRelease := pm.GetInstalledPlatformRelease(platform) if platformRelease == nil { - return nil, &commands.PlatformNotFound{Platform: ref.String()} + return nil, &arduino.PlatformNotFoundError{Platform: ref.String()} } ref.PlatformVersion = platformRelease.Version } platform, tools, err := pm.FindPlatformReleaseDependencies(ref) if err != nil { - return nil, &commands.NotFoundError{Message: tr("Can't find dependencies for platform %s", ref), Cause: err} + return nil, &arduino.NotFoundError{Message: tr("Can't find dependencies for platform %s", ref), Cause: err} } if err := uninstallPlatformRelease(pm, platform, taskCB); err != nil { @@ -77,7 +78,7 @@ func uninstallPlatformRelease(pm *packagemanager.PackageManager, platformRelease if err := pm.UninstallPlatform(platformRelease); err != nil { log.WithError(err).Error("Error uninstalling") - return &commands.FailedUninstallError{Message: tr("Error uninstalling platform %s", platformRelease), Cause: err} + return &arduino.FailedUninstallError{Message: tr("Error uninstalling platform %s", platformRelease), Cause: err} } log.Info("Platform uninstalled") @@ -93,7 +94,7 @@ func uninstallToolRelease(pm *packagemanager.PackageManager, toolRelease *cores. if err := pm.UninstallTool(toolRelease); err != nil { log.WithError(err).Error("Error uninstalling") - return &commands.FailedUninstallError{Message: tr("Error uninstalling tool %s", toolRelease), Cause: err} + return &arduino.FailedUninstallError{Message: tr("Error uninstalling tool %s", toolRelease), Cause: err} } log.Info("Tool uninstalled") diff --git a/commands/core/upgrade.go b/commands/core/upgrade.go index 3684d10287f..d83fca8c10b 100644 --- a/commands/core/upgrade.go +++ b/commands/core/upgrade.go @@ -18,6 +18,7 @@ package core import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -29,7 +30,7 @@ func PlatformUpgrade(ctx context.Context, req *rpc.PlatformUpgradeRequest, pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } // Extract all PlatformReference to platforms that have updates @@ -51,27 +52,27 @@ func PlatformUpgrade(ctx context.Context, req *rpc.PlatformUpgradeRequest, func upgradePlatform(pm *packagemanager.PackageManager, platformRef *packagemanager.PlatformReference, downloadCB commands.DownloadProgressCB, taskCB commands.TaskProgressCB, skipPostInstall bool) error { if platformRef.PlatformVersion != nil { - return &commands.InvalidArgumentError{Message: tr("Upgrade doesn't accept parameters with version")} + return &arduino.InvalidArgumentError{Message: tr("Upgrade doesn't accept parameters with version")} } // Search the latest version for all specified platforms platform := pm.FindPlatform(platformRef) if platform == nil { - return &commands.PlatformNotFound{Platform: platformRef.String()} + return &arduino.PlatformNotFoundError{Platform: platformRef.String()} } installed := pm.GetInstalledPlatformRelease(platform) if installed == nil { - return &commands.PlatformNotFound{Platform: platformRef.String()} + return &arduino.PlatformNotFoundError{Platform: platformRef.String()} } latest := platform.GetLatestRelease() if !latest.Version.GreaterThan(installed.Version) { - return &commands.PlatformAlreadyAtTheLatestVersionError{} + return &arduino.PlatformAlreadyAtTheLatestVersionError{} } platformRef.PlatformVersion = latest.Version platformRelease, tools, err := pm.FindPlatformReleaseDependencies(platformRef) if err != nil { - return &commands.PlatformNotFound{Platform: platformRef.String()} + return &arduino.PlatformNotFoundError{Platform: platformRef.String()} } if err := installPlatform(pm, platformRelease, tools, downloadCB, taskCB, skipPostInstall); err != nil { return err diff --git a/commands/daemon/daemon.go b/commands/daemon/daemon.go index 5056f8e8b23..9f6923d79e9 100644 --- a/commands/daemon/daemon.go +++ b/commands/daemon/daemon.go @@ -21,6 +21,7 @@ import ( "fmt" "io" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/utils" "github.com/arduino/arduino-cli/commands" "github.com/arduino/arduino-cli/commands/board" @@ -51,7 +52,7 @@ func convertErrorToRPCStatus(err error) error { if err == nil { return nil } - if cmdErr, ok := err.(commands.CommandError); ok { + if cmdErr, ok := err.(arduino.CommandError); ok { return cmdErr.ToRPCStatus().Err() } return err diff --git a/commands/debug/debug.go b/commands/debug/debug.go index ac5aea1e2ba..931668078e7 100644 --- a/commands/debug/debug.go +++ b/commands/debug/debug.go @@ -24,6 +24,7 @@ import ( "runtime" "time" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/commands" "github.com/arduino/arduino-cli/executils" @@ -63,7 +64,7 @@ func Debug(ctx context.Context, req *dbg.DebugConfigRequest, inStream io.Reader, cmd, err := executils.NewProcess(commandLine...) if err != nil { - return nil, &commands.FailedDebugError{Message: tr("Cannot execute debug tool"), Cause: err} + return nil, &arduino.FailedDebugError{Message: tr("Cannot execute debug tool"), Cause: err} } // Get stdIn pipe from tool @@ -130,7 +131,7 @@ func getCommandLine(req *dbg.DebugConfigRequest, pm *packagemanager.PackageManag } gdbPath = paths.New(debugInfo.ToolchainPath).Join(gdbexecutable) default: - return nil, &commands.FailedDebugError{Message: tr("Toolchain '%s' is not supported", debugInfo.GetToolchain())} + return nil, &arduino.FailedDebugError{Message: tr("Toolchain '%s' is not supported", debugInfo.GetToolchain())} } add(gdbPath.String()) @@ -169,7 +170,7 @@ func getCommandLine(req *dbg.DebugConfigRequest, pm *packagemanager.PackageManag add(serverCmd) default: - return nil, &commands.FailedDebugError{Message: tr("GDB server '%s' is not supported", debugInfo.GetServer())} + return nil, &arduino.FailedDebugError{Message: tr("GDB server '%s' is not supported", debugInfo.GetServer())} } // Add executable diff --git a/commands/debug/debug_info.go b/commands/debug/debug_info.go index b49cab74bef..e6a6a474296 100644 --- a/commands/debug/debug_info.go +++ b/commands/debug/debug_info.go @@ -19,6 +19,7 @@ import ( "context" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/arduino/sketch" @@ -39,12 +40,12 @@ func getDebugProperties(req *debug.DebugConfigRequest, pm *packagemanager.Packag // TODO: make a generic function to extract sketch from request // and remove duplication in commands/compile.go if req.GetSketchPath() == "" { - return nil, &commands.MissingSketchPathError{} + return nil, &arduino.MissingSketchPathError{} } sketchPath := paths.New(req.GetSketchPath()) sk, err := sketch.New(sketchPath) if err != nil { - return nil, &commands.CantOpenSketchError{Cause: err} + return nil, &arduino.CantOpenSketchError{Cause: err} } // XXX Remove this code duplication!! @@ -53,17 +54,17 @@ func getDebugProperties(req *debug.DebugConfigRequest, pm *packagemanager.Packag fqbnIn = sk.Metadata.CPU.Fqbn } if fqbnIn == "" { - return nil, &commands.MissingFQBNError{} + return nil, &arduino.MissingFQBNError{} } fqbn, err := cores.ParseFQBN(fqbnIn) if err != nil { - return nil, &commands.InvalidFQBNError{Cause: err} + return nil, &arduino.InvalidFQBNError{Cause: err} } // Find target board and board properties _, platformRelease, board, boardProperties, referencedPlatformRelease, err := pm.ResolveFQBN(fqbn) if err != nil { - return nil, &commands.UnknownFQBNError{Cause: err} + return nil, &arduino.UnknownFQBNError{Cause: err} } // Build configuration for debug @@ -106,7 +107,7 @@ func getDebugProperties(req *debug.DebugConfigRequest, pm *packagemanager.Packag } else if refP, ok := referencedPlatformRelease.Programmers[req.GetProgrammer()]; ok { toolProperties.Merge(refP.Properties) } else { - return nil, &commands.ProgrammerNotFoundError{Programmer: req.GetProgrammer()} + return nil, &arduino.ProgrammerNotFoundError{Programmer: req.GetProgrammer()} } } @@ -115,10 +116,10 @@ func getDebugProperties(req *debug.DebugConfigRequest, pm *packagemanager.Packag importPath = paths.New(importDir) } if !importPath.Exist() { - return nil, &commands.NotFoundError{Message: tr("Compiled sketch not found in %s", importPath)} + return nil, &arduino.NotFoundError{Message: tr("Compiled sketch not found in %s", importPath)} } if !importPath.IsDir() { - return nil, &commands.NotFoundError{Message: tr("Expected compiled sketch in directory %s, but is a file instead", importPath)} + return nil, &arduino.NotFoundError{Message: tr("Expected compiled sketch in directory %s, but is a file instead", importPath)} } toolProperties.SetPath("build.path", importPath) toolProperties.Set("build.project_name", sk.Name+".ino") @@ -138,7 +139,7 @@ func getDebugProperties(req *debug.DebugConfigRequest, pm *packagemanager.Packag } if !debugProperties.ContainsKey("executable") { - return nil, &commands.FailedDebugError{Message: tr("Debugging not supported for board %s", req.GetFqbn())} + return nil, &arduino.FailedDebugError{Message: tr("Debugging not supported for board %s", req.GetFqbn())} } server := debugProperties.Get("server") diff --git a/commands/download.go b/commands/download.go index a6265de9dc8..b6ff58134e6 100644 --- a/commands/download.go +++ b/commands/download.go @@ -18,6 +18,7 @@ package commands import ( "time" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/httpclient" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "go.bug.st/downloader/v2" @@ -28,7 +29,7 @@ import ( func GetDownloaderConfig() (*downloader.Config, error) { httpClient, err := httpclient.New() if err != nil { - return nil, &InvalidArgumentError{Message: tr("Could not connect via HTTP"), Cause: err} + return nil, &arduino.InvalidArgumentError{Message: tr("Could not connect via HTTP"), Cause: err} } return &downloader.Config{ HttpClient: *httpClient, @@ -59,7 +60,7 @@ func Download(d *downloader.Downloader, label string, downloadCB DownloadProgres } // The URL is not reachable for some reason if d.Resp.StatusCode >= 400 && d.Resp.StatusCode <= 599 { - return &FailedDownloadError{Message: tr("Server responded with: %s", d.Resp.Status)} + return &arduino.FailedDownloadError{Message: tr("Server responded with: %s", d.Resp.Status)} } downloadCB(&rpc.DownloadProgress{Completed: true}) return nil diff --git a/commands/instances.go b/commands/instances.go index fc15d96841c..dd9c4b28ece 100644 --- a/commands/instances.go +++ b/commands/instances.go @@ -24,6 +24,7 @@ import ( "os" "path" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packageindex" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" @@ -110,7 +111,7 @@ func Create(req *rpc.CreateRequest) (*rpc.CreateResponse, error) { if downloadsDir.NotExist() { err := downloadsDir.MkdirAll() if err != nil { - return nil, &PermissionDeniedError{Message: tr("Failed to create downloads directory"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Failed to create downloads directory"), Cause: err} } } @@ -120,7 +121,7 @@ func Create(req *rpc.CreateRequest) (*rpc.CreateResponse, error) { if packagesDir.NotExist() { err := packagesDir.MkdirAll() if err != nil { - return nil, &PermissionDeniedError{Message: tr("Failed to create data directory"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Failed to create data directory"), Cause: err} } } @@ -170,7 +171,7 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro } instance := instances[req.Instance.Id] if instance == nil { - return &InvalidInstanceError{} + return &arduino.InvalidInstanceError{} } // We need to clear the PackageManager currently in use by this instance @@ -350,7 +351,7 @@ func Init(req *rpc.InitRequest, responseCallback func(r *rpc.InitResponse)) erro func Destroy(ctx context.Context, req *rpc.DestroyRequest) (*rpc.DestroyResponse, error) { id := req.GetInstance().GetId() if _, ok := instances[id]; !ok { - return nil, &InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } delete(instances, id) @@ -362,7 +363,7 @@ func UpdateLibrariesIndex(ctx context.Context, req *rpc.UpdateLibrariesIndexRequ logrus.Info("Updating libraries index") lm := GetLibraryManager(req.GetInstance().GetId()) if lm == nil { - return &InvalidInstanceError{} + return &arduino.InvalidInstanceError{} } config, err := GetDownloaderConfig() if err != nil { @@ -370,13 +371,13 @@ func UpdateLibrariesIndex(ctx context.Context, req *rpc.UpdateLibrariesIndexRequ } if err := lm.IndexFile.Parent().MkdirAll(); err != nil { - return &PermissionDeniedError{Message: tr("Could not create index directory"), Cause: err} + return &arduino.PermissionDeniedError{Message: tr("Could not create index directory"), Cause: err} } // Create a temp dir to stage all downloads tmp, err := paths.MkTempDir("", "library_index_download") if err != nil { - return &TempDirCreationFailedError{Cause: err} + return &arduino.TempDirCreationFailedError{Cause: err} } defer tmp.RemoveAll() @@ -384,43 +385,43 @@ func UpdateLibrariesIndex(ctx context.Context, req *rpc.UpdateLibrariesIndexRequ tmpIndexGz := tmp.Join("library_index.json.gz") if d, err := downloader.DownloadWithConfig(tmpIndexGz.String(), librariesmanager.LibraryIndexGZURL.String(), *config, downloader.NoResume); err == nil { if err := Download(d, tr("Updating index: library_index.json.gz"), downloadCB); err != nil { - return &FailedDownloadError{Message: tr("Error downloading library_index.json.gz"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading library_index.json.gz"), Cause: err} } } else { - return &FailedDownloadError{Message: tr("Error downloading library_index.json.gz"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading library_index.json.gz"), Cause: err} } // Download signature tmpSignature := tmp.Join("library_index.json.sig") if d, err := downloader.DownloadWithConfig(tmpSignature.String(), librariesmanager.LibraryIndexSignature.String(), *config, downloader.NoResume); err == nil { if err := Download(d, tr("Updating index: library_index.json.sig"), downloadCB); err != nil { - return &FailedDownloadError{Message: tr("Error downloading library_index.json.sig"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading library_index.json.sig"), Cause: err} } } else { - return &FailedDownloadError{Message: tr("Error downloading library_index.json.sig"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading library_index.json.sig"), Cause: err} } // Extract the real library_index tmpIndex := tmp.Join("library_index.json") if err := paths.GUnzip(tmpIndexGz, tmpIndex); err != nil { - return &PermissionDeniedError{Message: tr("Error extracting library_index.json.gz"), Cause: err} + return &arduino.PermissionDeniedError{Message: tr("Error extracting library_index.json.gz"), Cause: err} } // Check signature if ok, _, err := security.VerifyArduinoDetachedSignature(tmpIndex, tmpSignature); err != nil { - return &PermissionDeniedError{Message: tr("Error verifying signature"), Cause: err} + return &arduino.PermissionDeniedError{Message: tr("Error verifying signature"), Cause: err} } else if !ok { - return &SignatureVerificationFailedError{File: "library_index.json"} + return &arduino.SignatureVerificationFailedError{File: "library_index.json"} } // Copy extracted library_index and signature to final destination lm.IndexFile.Remove() lm.IndexFileSignature.Remove() if err := tmpIndex.CopyTo(lm.IndexFile); err != nil { - return &PermissionDeniedError{Message: tr("Error writing library_index.json"), Cause: err} + return &arduino.PermissionDeniedError{Message: tr("Error writing library_index.json"), Cause: err} } if err := tmpSignature.CopyTo(lm.IndexFileSignature); err != nil { - return &PermissionDeniedError{Message: tr("Error writing library_index.json.sig"), Cause: err} + return &arduino.PermissionDeniedError{Message: tr("Error writing library_index.json.sig"), Cause: err} } return nil @@ -431,7 +432,7 @@ func UpdateIndex(ctx context.Context, req *rpc.UpdateIndexRequest, downloadCB Do id := req.GetInstance().GetId() _, ok := instances[id] if !ok { - return nil, &InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } indexpath := paths.New(configuration.Settings.GetString("directories.Data")) @@ -451,7 +452,7 @@ func UpdateIndex(ctx context.Context, req *rpc.UpdateIndexRequest, downloadCB Do if URL.Scheme == "file" { path := paths.New(URL.Path) if _, err := packageindex.LoadIndexNoSign(path); err != nil { - return nil, &InvalidArgumentError{Message: tr("Invalid package index in %s", path), Cause: err} + return nil, &arduino.InvalidArgumentError{Message: tr("Invalid package index in %s", path), Cause: err} } fi, _ := os.Stat(path.String()) @@ -465,9 +466,9 @@ func UpdateIndex(ctx context.Context, req *rpc.UpdateIndexRequest, downloadCB Do var tmp *paths.Path if tmpFile, err := ioutil.TempFile("", ""); err != nil { - return nil, &TempFileCreationFailedError{Cause: err} + return nil, &arduino.TempFileCreationFailedError{Cause: err} } else if err := tmpFile.Close(); err != nil { - return nil, &TempFileCreationFailedError{Cause: err} + return nil, &arduino.TempFileCreationFailedError{Cause: err} } else { tmp = paths.New(tmpFile.Name()) } @@ -475,16 +476,16 @@ func UpdateIndex(ctx context.Context, req *rpc.UpdateIndexRequest, downloadCB Do config, err := GetDownloaderConfig() if err != nil { - return nil, &FailedDownloadError{Message: tr("Error downloading index '%s'", URL), Cause: err} + return nil, &arduino.FailedDownloadError{Message: tr("Error downloading index '%s'", URL), Cause: err} } d, err := downloader.DownloadWithConfig(tmp.String(), URL.String(), *config) if err != nil { - return nil, &FailedDownloadError{Message: tr("Error downloading index '%s'", URL), Cause: err} + return nil, &arduino.FailedDownloadError{Message: tr("Error downloading index '%s'", URL), Cause: err} } coreIndexPath := indexpath.Join(path.Base(URL.Path)) err = Download(d, tr("Updating index: %s", coreIndexPath.Base()), downloadCB) if err != nil { - return nil, &FailedDownloadError{Message: tr("Error downloading index '%s'", URL), Cause: err} + return nil, &arduino.FailedDownloadError{Message: tr("Error downloading index '%s'", URL), Cause: err} } // Check for signature @@ -493,14 +494,14 @@ func UpdateIndex(ctx context.Context, req *rpc.UpdateIndexRequest, downloadCB Do if URL.Hostname() == "downloads.arduino.cc" { URLSig, err := url.Parse(URL.String()) if err != nil { - return nil, &InvalidURLError{Cause: err} + return nil, &arduino.InvalidURLError{Cause: err} } URLSig.Path += ".sig" if t, err := ioutil.TempFile("", ""); err != nil { - return nil, &TempFileCreationFailedError{Cause: err} + return nil, &arduino.TempFileCreationFailedError{Cause: err} } else if err := t.Close(); err != nil { - return nil, &TempFileCreationFailedError{Cause: err} + return nil, &arduino.TempFileCreationFailedError{Cause: err} } else { tmpSig = paths.New(t.Name()) } @@ -508,36 +509,36 @@ func UpdateIndex(ctx context.Context, req *rpc.UpdateIndexRequest, downloadCB Do d, err := downloader.DownloadWithConfig(tmpSig.String(), URLSig.String(), *config) if err != nil { - return nil, &FailedDownloadError{Message: tr("Error downloading index signature '%s'", URLSig), Cause: err} + return nil, &arduino.FailedDownloadError{Message: tr("Error downloading index signature '%s'", URLSig), Cause: err} } coreIndexSigPath = indexpath.Join(path.Base(URLSig.Path)) Download(d, tr("Updating index: %s", coreIndexSigPath.Base()), downloadCB) if d.Error() != nil { - return nil, &FailedDownloadError{Message: tr("Error downloading index signature '%s'", URLSig), Cause: err} + return nil, &arduino.FailedDownloadError{Message: tr("Error downloading index signature '%s'", URLSig), Cause: err} } if valid, _, err := security.VerifyArduinoDetachedSignature(tmp, tmpSig); err != nil { - return nil, &PermissionDeniedError{Message: tr("Error verifying signature"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error verifying signature"), Cause: err} } else if !valid { - return nil, &SignatureVerificationFailedError{File: URL.String()} + return nil, &arduino.SignatureVerificationFailedError{File: URL.String()} } } if _, err := packageindex.LoadIndex(tmp); err != nil { - return nil, &InvalidArgumentError{Message: tr("Invalid package index in %s", URL), Cause: err} + return nil, &arduino.InvalidArgumentError{Message: tr("Invalid package index in %s", URL), Cause: err} } if err := indexpath.MkdirAll(); err != nil { - return nil, &PermissionDeniedError{Message: tr("Can't create data directory %s", indexpath), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Can't create data directory %s", indexpath), Cause: err} } if err := tmp.CopyTo(coreIndexPath); err != nil { - return nil, &PermissionDeniedError{Message: tr("Error saving downloaded index %s", URL), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error saving downloaded index %s", URL), Cause: err} } if tmpSig != nil { if err := tmpSig.CopyTo(coreIndexSigPath); err != nil { - return nil, &PermissionDeniedError{Message: tr("Error saving downloaded index signature"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error saving downloaded index signature"), Cause: err} } } } @@ -570,7 +571,7 @@ func Outdated(ctx context.Context, req *rpc.OutdatedRequest) (*rpc.OutdatedRespo lm := GetLibraryManager(id) if lm == nil { - return nil, &InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } outdatedLibraries := []*rpc.InstalledLibrary{} @@ -593,7 +594,7 @@ func Outdated(ctx context.Context, req *rpc.OutdatedRequest) (*rpc.OutdatedRespo pm := GetPackageManager(id) if pm == nil { - return nil, &InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } outdatedPlatforms := []*rpc.Platform{} @@ -691,7 +692,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr lm := GetLibraryManager(req.Instance.Id) if lm == nil { - return &InvalidInstanceError{} + return &arduino.InvalidInstanceError{} } for _, libAlternatives := range lm.Libraries { @@ -707,9 +708,9 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr // Downloads latest library release taskCB(&rpc.TaskProgress{Name: tr("Downloading %s", available)}) if d, err := available.Resource.Download(lm.DownloadsDir, downloaderConfig); err != nil { - return &FailedDownloadError{Message: tr("Error downloading library"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading library"), Cause: err} } else if err := Download(d, available.String(), downloadCB); err != nil { - return &FailedDownloadError{Message: tr("Error downloading library"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading library"), Cause: err} } // Installs downloaded library @@ -719,7 +720,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr taskCB(&rpc.TaskProgress{Message: tr("Already installed %s", available), Completed: true}) continue } else if err != nil { - return &FailedLibraryInstallError{Cause: err} + return &arduino.FailedLibraryInstallError{Cause: err} } if libReplaced != nil { @@ -727,7 +728,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr } if err := lm.Install(available, libPath); err != nil { - return &FailedLibraryInstallError{Cause: err} + return &arduino.FailedLibraryInstallError{Cause: err} } taskCB(&rpc.TaskProgress{Message: tr("Installed %s", available), Completed: true}) @@ -736,7 +737,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr pm := GetPackageManager(req.Instance.Id) if pm == nil { - return &InvalidInstanceError{} + return &arduino.InvalidInstanceError{} } for _, targetPackage := range pm.Packages { @@ -755,7 +756,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr // Get list of installed tools needed by the currently installed version _, installedTools, err := pm.FindPlatformReleaseDependencies(ref) if err != nil { - return &NotFoundError{Message: tr("Can't find dependencies for platform %s", ref), Cause: err} + return &arduino.NotFoundError{Message: tr("Can't find dependencies for platform %s", ref), Cause: err} } ref = &packagemanager.PlatformReference{ @@ -767,7 +768,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr taskCB(&rpc.TaskProgress{Name: tr("Downloading %s", latest)}) _, tools, err := pm.FindPlatformReleaseDependencies(ref) if err != nil { - return &NotFoundError{Message: tr("Can't find dependencies for platform %s", ref), Cause: err} + return &arduino.NotFoundError{Message: tr("Can't find dependencies for platform %s", ref), Cause: err} } toolsToInstall := []*cores.ToolRelease{} @@ -784,15 +785,15 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr for _, tool := range toolsToInstall { if err := DownloadToolRelease(pm, tool, downloadCB); err != nil { taskCB(&rpc.TaskProgress{Message: tr("Error downloading tool %s", tool)}) - return &FailedDownloadError{Message: tr("Error downloading tool %s", tool), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading tool %s", tool), Cause: err} } } // Downloads platform if d, err := pm.DownloadPlatformRelease(latest, downloaderConfig); err != nil { - return &FailedDownloadError{Message: tr("Error downloading platform %s", latest), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading platform %s", latest), Cause: err} } else if err := Download(d, latest.String(), downloadCB); err != nil { - return &FailedDownloadError{Message: tr("Error downloading platform %s", latest), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Error downloading platform %s", latest), Cause: err} } logrus.Info("Updating platform " + installed.String()) @@ -803,7 +804,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr if err := InstallToolRelease(pm, tool, taskCB); err != nil { msg := tr("Error installing tool %s", tool) taskCB(&rpc.TaskProgress{Message: msg}) - return &FailedInstallError{Message: msg, Cause: err} + return &arduino.FailedInstallError{Message: msg, Cause: err} } } @@ -813,7 +814,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr logrus.WithError(err).Error("Cannot install platform") msg := tr("Error installing platform %s", latest) taskCB(&rpc.TaskProgress{Message: msg}) - return &FailedInstallError{Message: msg, Cause: err} + return &arduino.FailedInstallError{Message: msg, Cause: err} } // Uninstall previously installed release @@ -829,7 +830,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr logrus.WithError(err).Error("Error rolling-back changes.") msg := tr("Error rolling-back changes") taskCB(&rpc.TaskProgress{Message: fmt.Sprintf("%s: %s", msg, err)}) - return &FailedInstallError{Message: msg, Cause: err} + return &arduino.FailedInstallError{Message: msg, Cause: err} } } @@ -843,7 +844,7 @@ func Upgrade(ctx context.Context, req *rpc.UpgradeRequest, downloadCB DownloadPr if err := pm.UninstallTool(toolRelease); err != nil { log.WithError(err).Error("Error uninstalling") - return &FailedInstallError{Message: tr("Error uninstalling tool %s", toolRelease), Cause: err} + return &arduino.FailedInstallError{Message: tr("Error uninstalling tool %s", toolRelease), Cause: err} } log.Info("Tool uninstalled") @@ -874,7 +875,7 @@ func LoadSketch(ctx context.Context, req *rpc.LoadSketchRequest) (*rpc.LoadSketc // TODO: This should be a ToRpc function for the Sketch struct sketch, err := sk.New(paths.New(req.SketchPath)) if err != nil { - return nil, &CantOpenSketchError{Cause: err} + return nil, &arduino.CantOpenSketchError{Cause: err} } otherSketchFiles := make([]string, sketch.OtherSketchFiles.Len()) diff --git a/commands/lib/download.go b/commands/lib/download.go index 27771731789..4d0601d26fb 100644 --- a/commands/lib/download.go +++ b/commands/lib/download.go @@ -18,6 +18,7 @@ package lib import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/libraries/librariesindex" "github.com/arduino/arduino-cli/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/commands" @@ -34,7 +35,7 @@ func LibraryDownload(ctx context.Context, req *rpc.LibraryDownloadRequest, downl lm := commands.GetLibraryManager(req.GetInstance().GetId()) if lm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } logrus.Info("Preparing download") @@ -57,12 +58,12 @@ func downloadLibrary(lm *librariesmanager.LibrariesManager, libRelease *librarie taskCB(&rpc.TaskProgress{Name: tr("Downloading %s", libRelease)}) config, err := commands.GetDownloaderConfig() if err != nil { - return &commands.FailedDownloadError{Message: tr("Can't download library"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Can't download library"), Cause: err} } if d, err := libRelease.Resource.Download(lm.DownloadsDir, config); err != nil { - return &commands.FailedDownloadError{Message: tr("Can't download library"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Can't download library"), Cause: err} } else if err := commands.Download(d, libRelease.String(), downloadCB); err != nil { - return &commands.FailedDownloadError{Message: tr("Can't download library"), Cause: err} + return &arduino.FailedDownloadError{Message: tr("Can't download library"), Cause: err} } taskCB(&rpc.TaskProgress{Completed: true}) diff --git a/commands/lib/install.go b/commands/lib/install.go index 41b9cf0ba0d..5be44ca8ec7 100644 --- a/commands/lib/install.go +++ b/commands/lib/install.go @@ -19,6 +19,7 @@ import ( "context" "errors" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/libraries/librariesindex" "github.com/arduino/arduino-cli/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/commands" @@ -32,7 +33,7 @@ func LibraryInstall(ctx context.Context, req *rpc.LibraryInstallRequest, lm := commands.GetLibraryManager(req.GetInstance().GetId()) if lm == nil { - return &commands.InvalidInstanceError{} + return &arduino.InvalidInstanceError{} } toInstall := map[string]*rpc.LibraryDependencyStatus{} @@ -57,7 +58,7 @@ func LibraryInstall(ctx context.Context, req *rpc.LibraryInstallRequest, err := errors.New( tr("two different versions of the library %[1]s are required: %[2]s and %[3]s", dep.Name, dep.VersionRequired, existingDep.VersionRequired)) - return &commands.LibraryDependenciesResolutionFailedError{Cause: err} + return &arduino.LibraryDependenciesResolutionFailedError{Cause: err} } } toInstall[dep.Name] = dep @@ -98,7 +99,7 @@ func installLibrary(lm *librariesmanager.LibrariesManager, libRelease *libraries } if err != nil { - return &commands.FailedInstallError{Message: tr("Checking lib install prerequisites"), Cause: err} + return &arduino.FailedInstallError{Message: tr("Checking lib install prerequisites"), Cause: err} } if libReplaced != nil { @@ -106,7 +107,7 @@ func installLibrary(lm *librariesmanager.LibrariesManager, libRelease *libraries } if err := lm.Install(libRelease, libPath); err != nil { - return &commands.FailedLibraryInstallError{Cause: err} + return &arduino.FailedLibraryInstallError{Cause: err} } taskCB(&rpc.TaskProgress{Message: tr("Installed %s", libRelease), Completed: true}) @@ -117,7 +118,7 @@ func installLibrary(lm *librariesmanager.LibrariesManager, libRelease *libraries func ZipLibraryInstall(ctx context.Context, req *rpc.ZipLibraryInstallRequest, taskCB commands.TaskProgressCB) error { lm := commands.GetLibraryManager(req.GetInstance().GetId()) if err := lm.InstallZipLib(ctx, req.Path, req.Overwrite); err != nil { - return &commands.FailedLibraryInstallError{Cause: err} + return &arduino.FailedLibraryInstallError{Cause: err} } taskCB(&rpc.TaskProgress{Message: tr("Library installed"), Completed: true}) return nil @@ -127,7 +128,7 @@ func ZipLibraryInstall(ctx context.Context, req *rpc.ZipLibraryInstallRequest, t func GitLibraryInstall(ctx context.Context, req *rpc.GitLibraryInstallRequest, taskCB commands.TaskProgressCB) error { lm := commands.GetLibraryManager(req.GetInstance().GetId()) if err := lm.InstallGitLib(req.Url, req.Overwrite); err != nil { - return &commands.FailedLibraryInstallError{Cause: err} + return &arduino.FailedLibraryInstallError{Cause: err} } taskCB(&rpc.TaskProgress{Message: tr("Library installed"), Completed: true}) return nil diff --git a/commands/lib/list.go b/commands/lib/list.go index 2d1368e8456..cd031148ef2 100644 --- a/commands/lib/list.go +++ b/commands/lib/list.go @@ -19,6 +19,7 @@ import ( "context" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/libraries" "github.com/arduino/arduino-cli/arduino/libraries/librariesindex" @@ -36,12 +37,12 @@ type installedLib struct { func LibraryList(ctx context.Context, req *rpc.LibraryListRequest) (*rpc.LibraryListResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } lm := commands.GetLibraryManager(req.GetInstance().GetId()) if lm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } nameFilter := strings.ToLower(req.GetName()) @@ -51,11 +52,11 @@ func LibraryList(ctx context.Context, req *rpc.LibraryListRequest) (*rpc.Library if f := req.GetFqbn(); f != "" { fqbn, err := cores.ParseFQBN(req.GetFqbn()) if err != nil { - return nil, &commands.InvalidFQBNError{Cause: err} + return nil, &arduino.InvalidFQBNError{Cause: err} } _, boardPlatform, _, _, refBoardPlatform, err := pm.ResolveFQBN(fqbn) if err != nil { - return nil, &commands.UnknownFQBNError{Cause: err} + return nil, &arduino.UnknownFQBNError{Cause: err} } filteredRes := map[string]*installedLib{} @@ -103,7 +104,7 @@ func LibraryList(ctx context.Context, req *rpc.LibraryListRequest) (*rpc.Library } rpcLib, err := lib.Library.ToRPCLibrary() if err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Error getting information for library %s", lib.Library.Name), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error getting information for library %s", lib.Library.Name), Cause: err} } instaledLibs = append(instaledLibs, &rpc.InstalledLibrary{ Library: rpcLib, diff --git a/commands/lib/resolve_deps.go b/commands/lib/resolve_deps.go index 4c1957a7a5e..241b2fcfe38 100644 --- a/commands/lib/resolve_deps.go +++ b/commands/lib/resolve_deps.go @@ -19,6 +19,7 @@ import ( "context" "errors" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/libraries" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -28,7 +29,7 @@ import ( func LibraryResolveDependencies(ctx context.Context, req *rpc.LibraryResolveDependenciesRequest) (*rpc.LibraryResolveDependenciesResponse, error) { lm := commands.GetLibraryManager(req.GetInstance().GetId()) if lm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } // Search the requested lib @@ -52,12 +53,12 @@ func LibraryResolveDependencies(ctx context.Context, req *rpc.LibraryResolveDepe for _, directDep := range reqLibRelease.GetDependencies() { if _, ok := lm.Index.Libraries[directDep.GetName()]; !ok { err := errors.New(tr("dependency '%s' is not available", directDep.GetName())) - return nil, &commands.LibraryDependenciesResolutionFailedError{Cause: err} + return nil, &arduino.LibraryDependenciesResolutionFailedError{Cause: err} } } // Otherwise there is no possible solution, the depends field has an invalid formula - return nil, &commands.LibraryDependenciesResolutionFailedError{} + return nil, &arduino.LibraryDependenciesResolutionFailedError{} } res := []*rpc.LibraryDependencyStatus{} diff --git a/commands/lib/search.go b/commands/lib/search.go index 9e05bf0e95f..591e5b9c9fd 100644 --- a/commands/lib/search.go +++ b/commands/lib/search.go @@ -18,6 +18,7 @@ package lib import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/libraries/librariesindex" "github.com/arduino/arduino-cli/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/arduino/utils" @@ -30,7 +31,7 @@ import ( func LibrarySearch(ctx context.Context, req *rpc.LibrarySearchRequest) (*rpc.LibrarySearchResponse, error) { lm := commands.GetLibraryManager(req.GetInstance().GetId()) if lm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } return searchLibrary(req, lm), nil } diff --git a/commands/lib/uninstall.go b/commands/lib/uninstall.go index 5b363597b53..4145586fd74 100644 --- a/commands/lib/uninstall.go +++ b/commands/lib/uninstall.go @@ -18,6 +18,7 @@ package lib import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" ) @@ -27,7 +28,7 @@ func LibraryUninstall(ctx context.Context, req *rpc.LibraryUninstallRequest, tas lm := commands.GetLibraryManager(req.GetInstance().GetId()) ref, err := createLibIndexReference(lm, req) if err != nil { - return &commands.InvalidLibraryError{Cause: err} + return &arduino.InvalidLibraryError{Cause: err} } lib := lm.FindByReference(ref) diff --git a/commands/lib/upgrade.go b/commands/lib/upgrade.go index b181d38253b..ac9a74c0669 100644 --- a/commands/lib/upgrade.go +++ b/commands/lib/upgrade.go @@ -16,6 +16,7 @@ package lib import ( + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -25,7 +26,7 @@ import ( func LibraryUpgradeAll(instanceID int32, downloadCB commands.DownloadProgressCB, taskCB commands.TaskProgressCB) error { lm := commands.GetLibraryManager(instanceID) if lm == nil { - return &commands.InvalidInstanceError{} + return &arduino.InvalidInstanceError{} } if err := upgrade(lm, listLibraries(lm, true, true), downloadCB, taskCB); err != nil { @@ -43,7 +44,7 @@ func LibraryUpgradeAll(instanceID int32, downloadCB commands.DownloadProgressCB, func LibraryUpgrade(instanceID int32, libraryNames []string, downloadCB commands.DownloadProgressCB, taskCB commands.TaskProgressCB) error { lm := commands.GetLibraryManager(instanceID) if lm == nil { - return &commands.InvalidInstanceError{} + return &arduino.InvalidInstanceError{} } // get the libs to upgrade diff --git a/commands/lib/utils.go b/commands/lib/utils.go index 4f6df05623c..fa8290ab997 100644 --- a/commands/lib/utils.go +++ b/commands/lib/utils.go @@ -16,6 +16,7 @@ package lib import ( + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/libraries/librariesindex" "github.com/arduino/arduino-cli/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/commands" @@ -29,7 +30,7 @@ type libraryReferencer interface { func createLibIndexReference(lm *librariesmanager.LibrariesManager, req libraryReferencer) (*librariesindex.Reference, error) { version, err := commands.ParseVersion(req) if err != nil { - return nil, &commands.InvalidVersionError{Cause: err} + return nil, &arduino.InvalidVersionError{Cause: err} } return &librariesindex.Reference{Name: req.GetName(), Version: version}, nil @@ -42,7 +43,7 @@ func findLibraryIndexRelease(lm *librariesmanager.LibrariesManager, req libraryR } lib := lm.Index.FindRelease(ref) if lib == nil { - return nil, &commands.LibraryNotFound{Library: ref.String()} + return nil, &arduino.LibraryNotFoundError{Library: ref.String()} } return lib, nil } diff --git a/commands/monitor/monitor.go b/commands/monitor/monitor.go index 29fb6d68f51..8c217f81fa9 100644 --- a/commands/monitor/monitor.go +++ b/commands/monitor/monitor.go @@ -20,6 +20,7 @@ import ( "fmt" "io" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" pluggableMonitor "github.com/arduino/arduino-cli/arduino/monitor" @@ -61,7 +62,7 @@ func (p *PortProxy) Close() error { func Monitor(ctx context.Context, req *rpc.MonitorRequest) (*PortProxy, *pluggableMonitor.PortDescriptor, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, nil, &commands.InvalidInstanceError{} + return nil, nil, &arduino.InvalidInstanceError{} } m, err := findMonitorForProtocolAndBoard(pm, req.GetPort().GetProtocol(), req.GetFqbn()) @@ -70,17 +71,17 @@ func Monitor(ctx context.Context, req *rpc.MonitorRequest) (*PortProxy, *pluggab } if err := m.Run(); err != nil { - return nil, nil, &commands.FailedMonitorError{Cause: err} + return nil, nil, &arduino.FailedMonitorError{Cause: err} } descriptor, err := m.Describe() if err != nil { - return nil, nil, &commands.FailedMonitorError{Cause: err} + return nil, nil, &arduino.FailedMonitorError{Cause: err} } monIO, err := m.Open(req.GetPort().GetAddress(), req.GetPort().GetProtocol()) if err != nil { - return nil, nil, &commands.FailedMonitorError{Cause: err} + return nil, nil, &arduino.FailedMonitorError{Cause: err} } return &PortProxy{ @@ -95,7 +96,7 @@ func Monitor(ctx context.Context, req *rpc.MonitorRequest) (*PortProxy, *pluggab func findMonitorForProtocolAndBoard(pm *packagemanager.PackageManager, protocol, fqbn string) (*pluggableMonitor.PluggableMonitor, error) { if protocol == "" { - return nil, &commands.MissingPortProtocolError{} + return nil, &arduino.MissingPortProtocolError{} } var monitorDepOrRecipe *cores.MonitorDependency @@ -104,12 +105,12 @@ func findMonitorForProtocolAndBoard(pm *packagemanager.PackageManager, protocol, if fqbn != "" { fqbn, err := cores.ParseFQBN(fqbn) if err != nil { - return nil, &commands.InvalidFQBNError{Cause: err} + return nil, &arduino.InvalidFQBNError{Cause: err} } _, boardPlatform, _, boardProperties, _, err := pm.ResolveFQBN(fqbn) if err != nil { - return nil, &commands.UnknownFQBNError{Cause: err} + return nil, &arduino.UnknownFQBNError{Cause: err} } if mon, ok := boardPlatform.Monitors[protocol]; ok { @@ -119,7 +120,7 @@ func findMonitorForProtocolAndBoard(pm *packagemanager.PackageManager, protocol, cmdLine := boardProperties.ExpandPropsInString(recipe) cmdArgs, err := properties.SplitQuotedString(cmdLine, `"'`, false) if err != nil { - return nil, &commands.InvalidArgumentError{Message: tr("Invalid recipe in platform.txt"), Cause: err} + return nil, &arduino.InvalidArgumentError{Message: tr("Invalid recipe in platform.txt"), Cause: err} } id := fmt.Sprintf("%s-%s", boardPlatform, protocol) return pluggableMonitor.New(id, cmdArgs...), nil @@ -137,13 +138,13 @@ func findMonitorForProtocolAndBoard(pm *packagemanager.PackageManager, protocol, } if monitorDepOrRecipe == nil { - return nil, &commands.NoMonitorAvailableForProtocolError{Protocol: protocol} + return nil, &arduino.NoMonitorAvailableForProtocolError{Protocol: protocol} } // If it is a monitor dependency, resolve tool and create a monitor client tool := pm.FindMonitorDependency(monitorDepOrRecipe) if tool == nil { - return nil, &commands.MonitorNotFoundError{Monitor: monitorDepOrRecipe.String()} + return nil, &arduino.MonitorNotFoundError{Monitor: monitorDepOrRecipe.String()} } return pluggableMonitor.New( diff --git a/commands/monitor/settings.go b/commands/monitor/settings.go index 1147bf2582a..77f1effad75 100644 --- a/commands/monitor/settings.go +++ b/commands/monitor/settings.go @@ -18,6 +18,7 @@ package monitor import ( "context" + "github.com/arduino/arduino-cli/arduino" pluggableMonitor "github.com/arduino/arduino-cli/arduino/monitor" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -27,7 +28,7 @@ import ( func EnumerateMonitorPortSettings(ctx context.Context, req *rpc.EnumerateMonitorPortSettingsRequest) (*rpc.EnumerateMonitorPortSettingsResponse, error) { pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } m, err := findMonitorForProtocolAndBoard(pm, req.GetPortProtocol(), req.GetFqbn()) @@ -36,13 +37,13 @@ func EnumerateMonitorPortSettings(ctx context.Context, req *rpc.EnumerateMonitor } if err := m.Run(); err != nil { - return nil, &commands.FailedMonitorError{Cause: err} + return nil, &arduino.FailedMonitorError{Cause: err} } defer m.Quit() desc, err := m.Describe() if err != nil { - return nil, &commands.FailedMonitorError{Cause: err} + return nil, &arduino.FailedMonitorError{Cause: err} } return &rpc.EnumerateMonitorPortSettingsResponse{Settings: convert(desc)}, nil } diff --git a/commands/sketch/archive.go b/commands/sketch/archive.go index 8c99ea0944c..c353c670328 100644 --- a/commands/sketch/archive.go +++ b/commands/sketch/archive.go @@ -22,8 +22,8 @@ import ( "path/filepath" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/arduino-cli/commands" "github.com/arduino/arduino-cli/i18n" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" paths "github.com/arduino/go-paths-helper" @@ -43,7 +43,7 @@ func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.Arc s, err := sketch.New(sketchPath) if err != nil { - return nil, &commands.CantOpenSketchError{Cause: err} + return nil, &arduino.CantOpenSketchError{Cause: err} } sketchPath = s.FullPath @@ -56,7 +56,7 @@ func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.Arc archivePath, err = archivePath.Clean().Abs() if err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Error getting absolute path of sketch archive"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error getting absolute path of sketch archive"), Cause: err} } // Makes archivePath point to a zip file @@ -67,18 +67,18 @@ func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.Arc } if archivePath.Exist() { - return nil, &commands.InvalidArgumentError{Message: tr("Archive already exists")} + return nil, &arduino.InvalidArgumentError{Message: tr("Archive already exists")} } filesToZip, err := sketchPath.ReadDirRecursive() if err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Error reading sketch files"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error reading sketch files"), Cause: err} } filesToZip.FilterOutDirs() archive, err := archivePath.Create() if err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Error creating sketch archive"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error creating sketch archive"), Cause: err} } defer archive.Close() @@ -90,7 +90,7 @@ func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.Arc if !req.IncludeBuildDir { filePath, err := sketchPath.Parent().RelTo(f) if err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Error calculating relative file path"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error calculating relative file path"), Cause: err} } // Skips build folder @@ -102,7 +102,7 @@ func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.Arc // We get the parent path since we want the archive to unpack as a folder. // If we don't do this the archive would contain all the sketch files as top level. if err := addFileToSketchArchive(zipWriter, f, sketchPath.Parent()); err != nil { - return nil, &commands.PermissionDeniedError{Message: tr("Error adding file to sketch archive"), Cause: err} + return nil, &arduino.PermissionDeniedError{Message: tr("Error adding file to sketch archive"), Cause: err} } } diff --git a/commands/sketch/new.go b/commands/sketch/new.go index 04dc7545ac9..1aa97060363 100644 --- a/commands/sketch/new.go +++ b/commands/sketch/new.go @@ -18,8 +18,8 @@ package sketch import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/globals" - "github.com/arduino/arduino-cli/commands" "github.com/arduino/arduino-cli/configuration" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" paths "github.com/arduino/go-paths-helper" @@ -43,12 +43,12 @@ func NewSketch(ctx context.Context, req *rpc.NewSketchRequest) (*rpc.NewSketchRe } sketchDirPath := paths.New(sketchesDir).Join(req.SketchName) if err := sketchDirPath.MkdirAll(); err != nil { - return nil, &commands.CantCreateSketchError{Cause: err} + return nil, &arduino.CantCreateSketchError{Cause: err} } sketchName := sketchDirPath.Base() sketchMainFilePath := sketchDirPath.Join(sketchName + globals.MainFileValidExtension) if err := sketchMainFilePath.WriteFile(emptySketch); err != nil { - return nil, &commands.CantCreateSketchError{Cause: err} + return nil, &arduino.CantCreateSketchError{Cause: err} } return &rpc.NewSketchResponse{MainFile: sketchMainFilePath.String()}, nil diff --git a/commands/upload/programmers_list.go b/commands/upload/programmers_list.go index 1da6d93a2f7..a804aec21e5 100644 --- a/commands/upload/programmers_list.go +++ b/commands/upload/programmers_list.go @@ -18,6 +18,7 @@ package upload import ( "context" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" @@ -29,17 +30,17 @@ func ListProgrammersAvailableForUpload(ctx context.Context, req *rpc.ListProgram fqbnIn := req.GetFqbn() if fqbnIn == "" { - return nil, &commands.MissingFQBNError{} + return nil, &arduino.MissingFQBNError{} } fqbn, err := cores.ParseFQBN(fqbnIn) if err != nil { - return nil, &commands.InvalidFQBNError{Cause: err} + return nil, &arduino.InvalidFQBNError{Cause: err} } // Find target platforms _, platform, _, _, refPlatform, err := pm.ResolveFQBN(fqbn) if err != nil { - return nil, &commands.UnknownFQBNError{Cause: err} + return nil, &arduino.UnknownFQBNError{Cause: err} } result := []*rpc.Programmer{} diff --git a/commands/upload/upload.go b/commands/upload/upload.go index b7145511df9..0d6ca7aba72 100644 --- a/commands/upload/upload.go +++ b/commands/upload/upload.go @@ -22,6 +22,7 @@ import ( "path/filepath" "strings" + "github.com/arduino/arduino-cli/arduino" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/arduino/globals" @@ -43,22 +44,22 @@ var tr = i18n.Tr // by the upload tools needed by the board using the protocol specified in SupportedUserFieldsRequest. func SupportedUserFields(ctx context.Context, req *rpc.SupportedUserFieldsRequest) (*rpc.SupportedUserFieldsResponse, error) { if req.Protocol == "" { - return nil, &commands.MissingPortProtocolError{} + return nil, &arduino.MissingPortProtocolError{} } pm := commands.GetPackageManager(req.GetInstance().GetId()) if pm == nil { - return nil, &commands.InvalidInstanceError{} + return nil, &arduino.InvalidInstanceError{} } fqbn, err := cores.ParseFQBN(req.GetFqbn()) if err != nil { - return nil, &commands.InvalidFQBNError{Cause: err} + return nil, &arduino.InvalidFQBNError{Cause: err} } _, platformRelease, board, _, _, err := pm.ResolveFQBN(fqbn) if err != nil { - return nil, &commands.UnknownFQBNError{Cause: err} + return nil, &arduino.UnknownFQBNError{Cause: err} } toolID, err := getToolID(board.Properties, "upload", req.Protocol) @@ -87,7 +88,7 @@ func getToolID(props *properties.Map, action, protocol string) (string, error) { return t, nil } - return "", &commands.MissingPlatformPropertyError{Property: toolProperty} + return "", &arduino.MissingPlatformPropertyError{Property: toolProperty} } // getUserFields return all user fields supported by the tools specified. @@ -123,7 +124,7 @@ func Upload(ctx context.Context, req *rpc.UploadRequest, outStream io.Writer, er sketchPath := paths.New(req.GetSketchPath()) sk, err := sketch.New(sketchPath) if err != nil && req.GetImportDir() == "" && req.GetImportFile() == "" { - return nil, &commands.CantOpenSketchError{Cause: err} + return nil, &arduino.CantOpenSketchError{Cause: err} } pm := commands.GetPackageManager(req.GetInstance().GetId()) @@ -155,7 +156,7 @@ func UsingProgrammer(ctx context.Context, req *rpc.UploadUsingProgrammerRequest, logrus.Tracef("Upload using programmer %s on %s started", req.GetSketchPath(), req.GetFqbn()) if req.GetProgrammer() == "" { - return nil, &commands.MissingProgrammerError{} + return nil, &arduino.MissingProgrammerError{} } _, err := Upload(ctx, &rpc.UploadRequest{ Instance: req.GetInstance(), @@ -181,7 +182,7 @@ func runProgramAction(pm *packagemanager.PackageManager, dryRun bool, userFields map[string]string) error { if burnBootloader && programmerID == "" { - return &commands.MissingProgrammerError{} + return &arduino.MissingProgrammerError{} } logrus.WithField("port", port).Tracef("Upload port") @@ -190,18 +191,18 @@ func runProgramAction(pm *packagemanager.PackageManager, fqbnIn = sk.Metadata.CPU.Fqbn } if fqbnIn == "" { - return &commands.MissingFQBNError{} + return &arduino.MissingFQBNError{} } fqbn, err := cores.ParseFQBN(fqbnIn) if err != nil { - return &commands.InvalidFQBNError{Cause: err} + return &arduino.InvalidFQBNError{Cause: err} } logrus.WithField("fqbn", fqbn).Tracef("Detected FQBN") // Find target board and board properties _, boardPlatform, board, boardProperties, buildPlatform, err := pm.ResolveFQBN(fqbn) if err != nil { - return &commands.UnknownFQBNError{Cause: err} + return &arduino.UnknownFQBNError{Cause: err} } logrus. WithField("boardPlatform", boardPlatform). @@ -218,7 +219,7 @@ func runProgramAction(pm *packagemanager.PackageManager, programmer = buildPlatform.Programmers[programmerID] } if programmer == nil { - return &commands.ProgrammerNotFoundError{Programmer: programmerID} + return &arduino.ProgrammerNotFoundError{Programmer: programmerID} } } @@ -254,7 +255,7 @@ func runProgramAction(pm *packagemanager.PackageManager, Trace("Upload tool") if split := strings.Split(uploadToolID, ":"); len(split) > 2 { - return &commands.InvalidPlatformPropertyError{ + return &arduino.InvalidPlatformPropertyError{ Property: fmt.Sprintf("%s.tool.%s", action, port.Protocol), // TODO: Can be done better, maybe inline getToolID(...) Value: uploadToolID} } else if len(split) == 2 { @@ -304,7 +305,7 @@ func runProgramAction(pm *packagemanager.PackageManager, } if !uploadProperties.ContainsKey("upload.protocol") && programmer == nil { - return &commands.ProgrammerRequiredForUploadError{} + return &arduino.ProgrammerRequiredForUploadError{} } // Set properties for verbose upload @@ -352,13 +353,13 @@ func runProgramAction(pm *packagemanager.PackageManager, if !burnBootloader { importPath, sketchName, err := determineBuildPathAndSketchName(importFile, importDir, sk, fqbn) if err != nil { - return &commands.NotFoundError{Message: tr("Error finding build artifacts"), Cause: err} + return &arduino.NotFoundError{Message: tr("Error finding build artifacts"), Cause: err} } if !importPath.Exist() { - return &commands.NotFoundError{Message: tr("Compiled sketch not found in %s", importPath)} + return &arduino.NotFoundError{Message: tr("Compiled sketch not found in %s", importPath)} } if !importPath.IsDir() { - return &commands.NotFoundError{Message: tr("Expected compiled sketch in directory %s, but is a file instead", importPath)} + return &arduino.NotFoundError{Message: tr("Expected compiled sketch in directory %s, but is a file instead", importPath)} } uploadProperties.SetPath("build.path", importPath) uploadProperties.Set("build.project_name", sketchName) @@ -447,18 +448,18 @@ func runProgramAction(pm *packagemanager.PackageManager, // Run recipes for upload if burnBootloader { if err := runTool("erase.pattern", uploadProperties, outStream, errStream, verbose, dryRun); err != nil { - return &commands.FailedUploadError{Message: tr("Failed chip erase"), Cause: err} + return &arduino.FailedUploadError{Message: tr("Failed chip erase"), Cause: err} } if err := runTool("bootloader.pattern", uploadProperties, outStream, errStream, verbose, dryRun); err != nil { - return &commands.FailedUploadError{Message: tr("Failed to burn bootloader"), Cause: err} + return &arduino.FailedUploadError{Message: tr("Failed to burn bootloader"), Cause: err} } } else if programmer != nil { if err := runTool("program.pattern", uploadProperties, outStream, errStream, verbose, dryRun); err != nil { - return &commands.FailedUploadError{Message: tr("Failed programming"), Cause: err} + return &arduino.FailedUploadError{Message: tr("Failed programming"), Cause: err} } } else { if err := runTool("upload.pattern", uploadProperties, outStream, errStream, verbose, dryRun); err != nil { - return &commands.FailedUploadError{Message: tr("Failed uploading"), Cause: err} + return &arduino.FailedUploadError{Message: tr("Failed uploading"), Cause: err} } }