diff --git a/commands/sketch/warn_deprecated.go b/commands/sketch/warn_deprecated.go new file mode 100644 index 00000000000..a78f7156973 --- /dev/null +++ b/commands/sketch/warn_deprecated.go @@ -0,0 +1,36 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package sketch + +import ( + "fmt" + + "github.com/arduino/arduino-cli/arduino/sketch" + paths "github.com/arduino/go-paths-helper" +) + +// WarnDeprecatedFiles warns the user that a type of sketch files are deprecated +func WarnDeprecatedFiles(sketchPath *paths.Path) string { + // .pde files are still supported but deprecated, this warning urges the user to rename them + if files := sketch.CheckForPdeFiles(sketchPath); len(files) > 0 { + msg := tr("Sketches with .pde extension are deprecated, please rename the following files to .ino:") + for _, f := range files { + msg += fmt.Sprintf("\n - %s", f) + } + return msg + } + return "" +} diff --git a/internal/cli/arguments/sketch.go b/internal/cli/arguments/sketch.go index 6c167ad23dd..4e670bab6ac 100644 --- a/internal/cli/arguments/sketch.go +++ b/internal/cli/arguments/sketch.go @@ -16,9 +16,7 @@ package arguments import ( - "fmt" - - "github.com/arduino/arduino-cli/arduino/sketch" + sk "github.com/arduino/arduino-cli/commands/sketch" "github.com/arduino/arduino-cli/internal/cli/feedback" "github.com/arduino/go-paths-helper" "github.com/sirupsen/logrus" @@ -38,18 +36,8 @@ func InitSketchPath(path string) (sketchPath *paths.Path) { logrus.Infof("Reading sketch from dir: %s", wd) sketchPath = wd } - WarnDeprecatedFiles(sketchPath) - return sketchPath -} - -// WarnDeprecatedFiles warns the user that a type of sketch files are deprecated -func WarnDeprecatedFiles(sketchPath *paths.Path) { - // .pde files are still supported but deprecated, this warning urges the user to rename them - if files := sketch.CheckForPdeFiles(sketchPath); len(files) > 0 { - msg := tr("Sketches with .pde extension are deprecated, please rename the following files to .ino:") - for _, f := range files { - msg += fmt.Sprintf("\n - %s", f) - } + if msg := sk.WarnDeprecatedFiles(sketchPath); msg != "" { feedback.Warning(msg) } + return sketchPath } diff --git a/internal/cli/compile/compile.go b/internal/cli/compile/compile.go index dfd5d4c70ba..4ed8ab6638e 100644 --- a/internal/cli/compile/compile.go +++ b/internal/cli/compile/compile.go @@ -25,9 +25,8 @@ import ( "strings" "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/commands/compile" + "github.com/arduino/arduino-cli/commands/core" "github.com/arduino/arduino-cli/commands/sketch" "github.com/arduino/arduino-cli/commands/upload" "github.com/arduino/arduino-cli/configuration" @@ -363,17 +362,16 @@ func runCompileCommand(cmd *cobra.Command, args []string) { panic(tr("Platform ID is not correct")) } - // FIXME: Here we should not access PackageManager... - pme, release := commands.GetPackageManagerExplorer(compileRequest) - platform := pme.FindPlatform(&packagemanager.PlatformReference{ - Package: split[0], - PlatformArchitecture: split[1], - }) - release() - if profileArg.String() == "" { res.Error += fmt.Sprintln() - if platform != nil { + + if platform, err := core.PlatformSearch(&rpc.PlatformSearchRequest{ + Instance: inst, + SearchArgs: platformErr.Platform, + AllVersions: false, + }); err != nil { + res.Error += err.Error() + } else if len(platform.GetSearchOutput()) > 0 { suggestion := fmt.Sprintf("`%s core install %s`", version.VersionInfo.Application, platformErr.Platform) res.Error += tr("Try running %s", suggestion) } else { diff --git a/internal/cli/sketch/archive.go b/internal/cli/sketch/archive.go index 9410bb0d0c6..e21221aa3e7 100644 --- a/internal/cli/sketch/archive.go +++ b/internal/cli/sketch/archive.go @@ -21,7 +21,6 @@ import ( "os" sk "github.com/arduino/arduino-cli/commands/sketch" - "github.com/arduino/arduino-cli/internal/cli/arguments" "github.com/arduino/arduino-cli/internal/cli/feedback" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-paths-helper" @@ -61,7 +60,9 @@ func runArchiveCommand(args []string, includeBuildDir bool, overwrite bool) { sketchPath = paths.New(args[0]) } - arguments.WarnDeprecatedFiles(sketchPath) + if msg := sk.WarnDeprecatedFiles(sketchPath); msg != "" { + feedback.Warning(msg) + } archivePath := "" if len(args) == 2 { diff --git a/internal/cli/upload/upload.go b/internal/cli/upload/upload.go index 3c33f2675b0..aa079f98653 100644 --- a/internal/cli/upload/upload.go +++ b/internal/cli/upload/upload.go @@ -23,8 +23,7 @@ import ( "strings" "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/commands/core" sk "github.com/arduino/arduino-cli/commands/sketch" "github.com/arduino/arduino-cli/commands/upload" "github.com/arduino/arduino-cli/i18n" @@ -86,8 +85,8 @@ func runUploadCommand(command *cobra.Command, args []string) { } sketchPath := arguments.InitSketchPath(path) - if importDir == "" && importFile == "" { - arguments.WarnDeprecatedFiles(sketchPath) + if msg := sk.WarnDeprecatedFiles(sketchPath); importDir == "" && importFile == "" && msg != "" { + feedback.Warning(msg) } sketch, err := sk.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath.String()}) @@ -130,16 +129,14 @@ func runUploadCommand(command *cobra.Command, args []string) { panic(tr("Platform ID is not correct")) } - // FIXME: Here we must not access package manager... - pme, release := commands.GetPackageManagerExplorer(&rpc.UploadRequest{Instance: inst}) - platform := pme.FindPlatform(&packagemanager.PlatformReference{ - Package: split[0], - PlatformArchitecture: split[1], - }) - release() - msg += "\n" - if platform != nil { + if platform, err := core.PlatformSearch(&rpc.PlatformSearchRequest{ + Instance: inst, + SearchArgs: platformErr.Platform, + AllVersions: false, + }); err != nil { + msg += err.Error() + } else if len(platform.GetSearchOutput()) > 0 { msg += tr("Try running %s", fmt.Sprintf("`%s core install %s`", version.VersionInfo.Application, platformErr.Platform)) } else { msg += tr("Platform %s is not found in any known index\nMaybe you need to add a 3rd party URL?", platformErr.Platform)