Unverified Commit 73b8aa09 authored by Cristian Maglie's avatar Cristian Maglie Committed by GitHub

Add `monitor --describe` command (#1493)

* Resolve monitors from platform.txt

* Implementation of monitor --describe command

* fix i18n
parent 802917d6
......@@ -62,6 +62,7 @@ type PlatformRelease struct {
IsIDEBundled bool `json:"-"`
IsTrusted bool `json:"-"`
PluggableDiscoveryAware bool `json:"-"` // true if the Platform supports pluggable discovery (no compatibility layer required)
Monitors map[string]*MonitorDependency
}
// BoardManifest contains information about a board. These metadata are usually
......
......@@ -326,6 +326,7 @@ func (pm *PackageManager) loadPlatformRelease(platform *cores.PlatformRelease, p
} else {
platform.Properties.Set("pluggable_discovery.required.0", "builtin:serial-discovery")
platform.Properties.Set("pluggable_discovery.required.1", "builtin:mdns-discovery")
platform.Properties.Set("pluggable_monitor.required.serial", "builtin:serial-monitor")
}
if platform.Platform.Name == "" {
......@@ -359,6 +360,19 @@ func (pm *PackageManager) loadPlatformRelease(platform *cores.PlatformRelease, p
if !platform.PluggableDiscoveryAware {
convertLegacyPlatformToPluggableDiscovery(platform)
}
// Build pluggable monitor references
platform.Monitors = map[string]*cores.MonitorDependency{}
for protocol, ref := range platform.Properties.SubTree("pluggable_monitor.required").AsMap() {
split := strings.Split(ref, ":")
if len(split) != 2 {
return fmt.Errorf(tr("invalid pluggable monitor reference: %s"), ref)
}
platform.Monitors[protocol] = &cores.MonitorDependency{
Packager: split[0],
Name: split[1],
}
}
return nil
}
......
......@@ -35,6 +35,7 @@ import (
"github.com/arduino/arduino-cli/cli/generatedocs"
"github.com/arduino/arduino-cli/cli/globals"
"github.com/arduino/arduino-cli/cli/lib"
"github.com/arduino/arduino-cli/cli/monitor"
"github.com/arduino/arduino-cli/cli/outdated"
"github.com/arduino/arduino-cli/cli/output"
"github.com/arduino/arduino-cli/cli/sketch"
......@@ -93,6 +94,7 @@ func createCliCommandTree(cmd *cobra.Command) {
cmd.AddCommand(daemon.NewCommand())
cmd.AddCommand(generatedocs.NewCommand())
cmd.AddCommand(lib.NewCommand())
cmd.AddCommand(monitor.NewCommand())
cmd.AddCommand(outdated.NewCommand())
cmd.AddCommand(sketch.NewCommand())
cmd.AddCommand(update.NewCommand())
......
// 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 monitor
import (
"context"
"os"
"sort"
"strings"
"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/commands/monitor"
"github.com/arduino/arduino-cli/i18n"
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
"github.com/arduino/arduino-cli/table"
"github.com/fatih/color"
"github.com/spf13/cobra"
)
var tr = i18n.Tr
var portArgs arguments.Port
var describe bool
// NewCommand created a new `monitor` command
func NewCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "monitor",
Short: tr("Open a communication port with a board."),
Long: tr("Open a communication port with a board."),
Example: "" +
" " + os.Args[0] + " monitor -p /dev/ttyACM0\n" +
" " + os.Args[0] + " monitor -p /dev/ttyACM0 --describe",
Run: runMonitorCmd,
}
portArgs.AddToCommand(cmd)
cmd.Flags().BoolVar(&describe, "describe", false, tr("Show all the settings of the communication port."))
cmd.MarkFlagRequired("port")
return cmd
}
func runMonitorCmd(cmd *cobra.Command, args []string) {
instance := instance.CreateAndInit()
port, err := portArgs.GetPort(instance, nil)
if err != nil {
feedback.Error(err)
os.Exit(errorcodes.ErrGeneric)
}
if describe {
res, err := monitor.EnumerateMonitorPortSettings(context.Background(), &rpc.EnumerateMonitorPortSettingsRequest{
Instance: instance,
Port: port.ToRPC(),
Fqbn: "",
})
if err != nil {
feedback.Error(tr("Error getting port settings details: %s"), err)
os.Exit(errorcodes.ErrGeneric)
}
feedback.PrintResult(&detailsResult{Settings: res.Settings})
return
}
feedback.Error("Monitor functionality not yet implemented")
os.Exit(errorcodes.ErrGeneric)
}
type detailsResult struct {
Settings []*rpc.MonitorPortSettingDescriptor `json:"settings"`
}
func (r *detailsResult) Data() interface{} {
return r
}
func (r *detailsResult) String() string {
t := table.New()
green := color.New(color.FgGreen)
t.SetHeader(tr("ID"), tr("Setting"), tr("Default"), tr("Values"))
sort.Slice(r.Settings, func(i, j int) bool {
return r.Settings[i].Label < r.Settings[j].Label
})
for _, setting := range r.Settings {
values := strings.Join(setting.EnumValues, ", ")
t.AddRow(setting.SettingId, setting.Label, table.NewCell(setting.Value, green), values)
}
return t.Render()
}
......@@ -26,6 +26,7 @@ import (
"github.com/arduino/arduino-cli/commands/compile"
"github.com/arduino/arduino-cli/commands/core"
"github.com/arduino/arduino-cli/commands/lib"
"github.com/arduino/arduino-cli/commands/monitor"
"github.com/arduino/arduino-cli/commands/sketch"
"github.com/arduino/arduino-cli/commands/upload"
"github.com/arduino/arduino-cli/i18n"
......@@ -467,8 +468,9 @@ func (s *ArduinoCoreServerImpl) GitLibraryInstall(req *rpc.GitLibraryInstallRequ
}
// EnumerateMonitorPortSettings FIXMEDOC
func (s *ArduinoCoreServerImpl) EnumerateMonitorPortSettings(context.Context, *rpc.EnumerateMonitorPortSettingsRequest) (*rpc.EnumerateMonitorPortSettingsResponse, error) {
return nil, status.New(codes.Unimplemented, "Not implemented").Err()
func (s *ArduinoCoreServerImpl) EnumerateMonitorPortSettings(ctx context.Context, req *rpc.EnumerateMonitorPortSettingsRequest) (*rpc.EnumerateMonitorPortSettingsResponse, error) {
resp, err := monitor.EnumerateMonitorPortSettings(ctx, req)
return resp, convertErrorToRPCStatus(err)
}
// Monitor FIXMEDOC
......
......@@ -162,6 +162,32 @@ func (e *MissingPortProtocolError) ToRPCStatus() *status.Status {
return status.New(codes.InvalidArgument, e.Error())
}
// MissingPortError is returned when the port is mandatory and not specified
type MissingPortError struct{}
func (e *MissingPortError) Error() string {
return tr("Missing port")
}
// ToRPCStatus converts the error into a *status.Status
func (e *MissingPortError) ToRPCStatus() *status.Status {
return status.New(codes.InvalidArgument, e.Error())
}
// NoMonitorAvailableForProtocolError is returned when a monitor for the specified port protocol is not available
type NoMonitorAvailableForProtocolError struct {
Protocol string
}
func (e *NoMonitorAvailableForProtocolError) Error() string {
return tr("No monitor available for the port protocol %s", e.Protocol)
}
// ToRPCStatus converts the error into a *status.Status
func (e *NoMonitorAvailableForProtocolError) ToRPCStatus() *status.Status {
return status.New(codes.InvalidArgument, e.Error())
}
// MissingProgrammerError is returned when the programmer is mandatory and not specified
type MissingProgrammerError struct{}
......@@ -208,6 +234,25 @@ func (e *ProgrammerNotFoundError) ToRPCStatus() *status.Status {
return status.New(codes.NotFound, e.Error())
}
// MonitorNotFoundError is returned when the pluggable monitor is not found
type MonitorNotFoundError struct {
Monitor string
Cause error
}
func (e *MonitorNotFoundError) Error() string {
return composeErrorMsg(tr("Monitor '%s' not found", e.Monitor), e.Cause)
}
func (e *MonitorNotFoundError) Unwrap() error {
return e.Cause
}
// ToRPCStatus converts the error into a *status.Status
func (e *MonitorNotFoundError) ToRPCStatus() *status.Status {
return status.New(codes.NotFound, e.Error())
}
// InvalidPlatformPropertyError is returned when a property in the platform is not valid
type InvalidPlatformPropertyError struct {
Property string
......@@ -454,6 +499,24 @@ func (e *FailedDebugError) ToRPCStatus() *status.Status {
return status.New(codes.Internal, e.Error())
}
// FailedMonitorError is returned when opening the monitor port of a board fails
type FailedMonitorError struct {
Cause error
}
func (e *FailedMonitorError) Error() string {
return composeErrorMsg(tr("Port monitor error"), e.Cause)
}
func (e *FailedMonitorError) Unwrap() error {
return e.Cause
}
// ToRPCStatus converts the error into a *status.Status
func (e *FailedMonitorError) ToRPCStatus() *status.Status {
return status.New(codes.Internal, e.Error())
}
// CompileFailedError is returned when the compile fails
type CompileFailedError struct {
Message string
......
// 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 monitor
import (
"github.com/arduino/arduino-cli/arduino/cores"
"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"
)
func findMonitorForProtocolAndBoard(pm *packagemanager.PackageManager, port *rpc.Port, fqbn string) (*cores.MonitorDependency, error) {
if port == nil {
return nil, &commands.MissingPortError{}
}
protocol := port.GetProtocol()
if protocol == "" {
return nil, &commands.MissingPortProtocolError{}
}
// If a board is specified search the monitor in the board package first
if fqbn != "" {
fqbn, err := cores.ParseFQBN(fqbn)
if err != nil {
return nil, &commands.InvalidFQBNError{Cause: err}
}
_, boardPlatform, _, _, _, err := pm.ResolveFQBN(fqbn)
if err != nil {
return nil, &commands.UnknownFQBNError{Cause: err}
}
if mon, ok := boardPlatform.Monitors[protocol]; ok {
return mon, nil
}
}
// Otherwise look in all package for a suitable monitor
for _, platformRel := range pm.InstalledPlatformReleases() {
if mon, ok := platformRel.Monitors[protocol]; ok {
return mon, nil
}
}
return nil, &commands.NoMonitorAvailableForProtocolError{Protocol: protocol}
}
// 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 monitor
import (
"context"
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"
)
// EnumerateMonitorPortSettings returns a description of the configuration settings of a monitor port
func EnumerateMonitorPortSettings(ctx context.Context, req *rpc.EnumerateMonitorPortSettingsRequest) (*rpc.EnumerateMonitorPortSettingsResponse, error) {
pm := commands.GetPackageManager(req.GetInstance().GetId())
if pm == nil {
return nil, &commands.InvalidInstanceError{}
}
monitorRef, err := findMonitorForProtocolAndBoard(pm, req.GetPort(), req.GetFqbn())
if err != nil {
return nil, err
}
tool := pm.FindMonitorDependency(monitorRef)
if tool == nil {
return nil, &commands.MonitorNotFoundError{Monitor: monitorRef.String()}
}
m := pluggableMonitor.New(monitorRef.Name, tool.InstallDir.Join(monitorRef.Name).String())
if err := m.Run(); err != nil {
return nil, &commands.FailedMonitorError{Cause: err}
}
defer m.Quit()
desc, err := m.Describe()
if err != nil {
return nil, &commands.FailedMonitorError{Cause: err}
}
return &rpc.EnumerateMonitorPortSettingsResponse{Settings: convert(desc)}, nil
}
func convert(desc *pluggableMonitor.PortDescriptor) []*rpc.MonitorPortSettingDescriptor {
res := []*rpc.MonitorPortSettingDescriptor{}
for settingID, descriptor := range desc.ConfigurationParameters {
res = append(res, &rpc.MonitorPortSettingDescriptor{
SettingId: settingID,
Label: descriptor.Label,
Type: descriptor.Type,
EnumValues: descriptor.Values,
Value: descriptor.Selected,
})
}
return res
}
......@@ -70,7 +70,7 @@ msgstr "%s pattern is missing"
msgid "%s uninstalled"
msgstr "%s uninstalled"
#: commands/errors.go:595
#: commands/errors.go:658
msgid "'%s' has an invalid signature"
msgstr "'%s' has an invalid signature"
......@@ -95,7 +95,7 @@ msgstr "--git-url and --zip-path flags allow installing untrusted files, use it
msgid "A new release of Arduino CLI is available:"
msgstr "A new release of Arduino CLI is available:"
#: commands/errors.go:181
#: commands/errors.go:207
msgid "A programmer is required to upload"
msgstr "A programmer is required to upload"
......@@ -153,11 +153,11 @@ msgstr "Archiving built core (caching) in: {0}"
msgid "Arduino CLI sketch commands."
msgstr "Arduino CLI sketch commands."
#: cli/cli.go:71
#: cli/cli.go:72
msgid "Arduino CLI."
msgstr "Arduino CLI."
#: cli/cli.go:72
#: cli/cli.go:73
msgid "Arduino Command Line Interface (arduino-cli)."
msgstr "Arduino Command Line Interface (arduino-cli)."
......@@ -260,7 +260,7 @@ msgstr "Can't download library"
msgid "Can't find dependencies for platform %s"
msgstr "Can't find dependencies for platform %s"
#: commands/errors.go:332
#: commands/errors.go:377
msgid "Can't open sketch"
msgstr "Can't open sketch"
......@@ -294,11 +294,11 @@ msgstr "Cannot create config file directory: %v"
msgid "Cannot create config file: %v"
msgstr "Cannot create config file: %v"
#: commands/errors.go:558
#: commands/errors.go:621
msgid "Cannot create temp dir"
msgstr "Cannot create temp dir"
#: commands/errors.go:576
#: commands/errors.go:639
msgid "Cannot create temp file"
msgstr "Cannot create temp file"
......@@ -365,7 +365,7 @@ msgstr "Checksum:"
msgid "Clean caches."
msgstr "Clean caches."
#: cli/cli.go:111
#: cli/cli.go:113
msgid "Comma-separated list of additional URLs for the Boards Manager."
msgstr "Comma-separated list of additional URLs for the Boards Manager."
......@@ -496,6 +496,10 @@ msgstr "Debugging not supported for board %s"
msgid "Debugging supported:"
msgstr "Debugging supported:"
#: cli/monitor/monitor.go:96
msgid "Default"
msgstr "Default"
#: cli/cache/clean.go:31
msgid "Delete Boards/Library Manager download cache."
msgstr "Delete Boards/Library Manager download cache."
......@@ -778,6 +782,10 @@ msgstr "Error getting information for library %s"
msgid "Error getting libraries info: %v"
msgstr "Error getting libraries info: %v"
#: cli/monitor/monitor.go:74
msgid "Error getting port settings details: %s"
msgstr "Error getting port settings details: %s"
#: legacy/builder/types/context.go:239
msgid "Error in FQBN: %s"
msgstr "Error in FQBN: %s"
......@@ -1122,6 +1130,7 @@ msgstr "Global variables use {0} bytes of dynamic memory."
#: cli/core/list.go:84
#: cli/core/search.go:114
#: cli/monitor/monitor.go:96
#: cli/outdated/outdated.go:62
msgid "ID"
msgstr "ID"
......@@ -1192,11 +1201,11 @@ msgstr "Installs one or more specified libraries into the system."
msgid "Internal error in cache"
msgstr "Internal error in cache"
#: commands/errors.go:218
#: commands/errors.go:263
msgid "Invalid '%[1]s' property: %[2]s"
msgstr "Invalid '%[1]s' property: %[2]s"
#: cli/cli.go:252
#: cli/cli.go:254
msgid "Invalid Call : should show Help, but it is available only in TEXT mode."
msgstr "Invalid Call : should show Help, but it is available only in TEXT mode."
......@@ -1253,11 +1262,11 @@ msgstr "Invalid library"
msgid "Invalid network.proxy '%[1]s': %[2]s"
msgstr "Invalid network.proxy '%[1]s': %[2]s"
#: cli/cli.go:213
#: cli/cli.go:215
msgid "Invalid option for --log-level: %s"
msgstr "Invalid option for --log-level: %s"
#: cli/cli.go:230
#: cli/cli.go:232
msgid "Invalid output format: %s"
msgstr "Invalid output format: %s"
......@@ -1314,7 +1323,7 @@ msgstr "Latest"
msgid "Library %s is not installed"
msgstr "Library %s is not installed"
#: commands/errors.go:266
#: commands/errors.go:311
msgid "Library '%s' not found"
msgstr "Library '%s' not found"
......@@ -1322,7 +1331,7 @@ msgstr "Library '%s' not found"
msgid "Library can't use both '%[1]s' and '%[2]s' folders. Double check {0}"
msgstr "Library can't use both '%[1]s' and '%[2]s' folders. Double check {0}"
#: commands/errors.go:369
#: commands/errors.go:414
msgid "Library install failed"
msgstr "Library install failed"
......@@ -1422,7 +1431,7 @@ msgstr "Maintainer: %s"
msgid "Max time to wait for port discovery, e.g.: 30s, 1m"
msgstr "Max time to wait for port discovery, e.g.: 30s, 1m"
#: cli/cli.go:106
#: cli/cli.go:108
msgid "Messages with this level and above will be logged. Valid levels are: %s"
msgstr "Messages with this level and above will be logged. Valid levels are: %s"
......@@ -1434,11 +1443,15 @@ msgstr "Missing '{0}' from library in {1}"
msgid "Missing FQBN (Fully Qualified Board Name)"
msgstr "Missing FQBN (Fully Qualified Board Name)"
#: commands/errors.go:169
msgid "Missing port"
msgstr "Missing port"
#: commands/errors.go:157
msgid "Missing port protocol"
msgstr "Missing port protocol"
#: commands/errors.go:169
#: commands/errors.go:195
msgid "Missing programmer"
msgstr "Missing programmer"
......@@ -1446,10 +1459,14 @@ msgstr "Missing programmer"
msgid "Missing size regexp"
msgstr "Missing size regexp"
#: commands/errors.go:318
#: commands/errors.go:363
msgid "Missing sketch path"
msgstr "Missing sketch path"
#: commands/errors.go:244
msgid "Monitor '%s' not found"
msgstr "Monitor '%s' not found"
#: legacy/builder/print_used_and_not_used_libraries.go:50
msgid "Multiple libraries were found for \"{0}\""
msgstr "Multiple libraries were found for \"{0}\""
......@@ -1501,6 +1518,10 @@ msgstr "No libraries matching your search.\n"
"Did you mean...\n"
""
#: commands/errors.go:183
msgid "No monitor available for the port protocol %s"
msgstr "No monitor available for the port protocol %s"
#: cli/core/search.go:124
msgid "No platforms matching your search."
msgstr "No platforms matching your search."
......@@ -1517,7 +1538,7 @@ msgstr "No updates available."
msgid "No upload port found, using %s as fallback"
msgstr "No upload port found, using %s as fallback"
#: commands/errors.go:285
#: commands/errors.go:330
msgid "No valid dependencies solution found"
msgstr "No valid dependencies solution found"
......@@ -1547,6 +1568,11 @@ msgstr "OS:"
msgid "Official Arduino board:"
msgstr "Official Arduino board:"
#: cli/monitor/monitor.go:45
#: cli/monitor/monitor.go:46
msgid "Open a communication port with a board."
msgstr "Open a communication port with a board."
#: cli/board/details.go:177
msgid "Option:"
msgstr "Option:"
......@@ -1624,7 +1650,7 @@ msgstr "Package website:"
msgid "Paragraph: %s"
msgstr "Paragraph: %s"
#: cli/cli.go:107
#: cli/cli.go:109
msgid "Path to the file where logs will be written."
msgstr "Path to the file where logs will be written."
......@@ -1648,11 +1674,11 @@ msgstr "Platform %s installed"
msgid "Platform %s uninstalled"
msgstr "Platform %s uninstalled"
#: commands/errors.go:303
#: commands/errors.go:348
msgid "Platform '%s' is already at the latest version"
msgstr "Platform '%s' is already at the latest version"
#: commands/errors.go:247
#: commands/errors.go:292
msgid "Platform '%s' not found"
msgstr "Platform '%s' not found"
......@@ -1693,6 +1719,10 @@ msgstr "Platform size (bytes):"
msgid "Port"
msgstr "Port"
#: commands/errors.go:508
msgid "Port monitor error"
msgstr "Port monitor error"
#: legacy/builder/phases/libraries_builder.go:101
#: legacy/builder/phases/libraries_builder.go:109
msgid "Precompiled library in \"{0}\" not found"
......@@ -1706,7 +1736,7 @@ msgstr "Print details about a board."
msgid "Print preprocessed code to stdout instead of compiling."
msgstr "Print preprocessed code to stdout instead of compiling."
#: cli/cli.go:105
#: cli/cli.go:107
msgid "Print the logs on the standard output."
msgstr "Print the logs on the standard output."
......@@ -1718,7 +1748,7 @@ msgstr "Prints the current configuration"
msgid "Prints the current configuration."
msgstr "Prints the current configuration."
#: commands/errors.go:199
#: commands/errors.go:225
msgid "Programmer '%s' not found"
msgstr "Programmer '%s' not found"
......@@ -1738,7 +1768,7 @@ msgstr "Programmers:"
msgid "Progress {0}"
msgstr "Progress {0}"
#: commands/errors.go:232
#: commands/errors.go:277
msgid "Property '%s' is undefined"
msgstr "Property '%s' is undefined"
......@@ -1822,6 +1852,10 @@ msgstr "Sets a setting value."
msgid "Sets where to save the configuration file."
msgstr "Sets where to save the configuration file."
#: cli/monitor/monitor.go:96
msgid "Setting"
msgstr "Setting"
#: cli/config/delete.go:57
#: cli/config/validate.go:45
msgid "Settings key doesn't exist"
......@@ -1835,6 +1869,10 @@ msgstr "Show all available core versions."
msgid "Show all build properties used instead of compiling."
msgstr "Show all build properties used instead of compiling."
#: cli/monitor/monitor.go:53
msgid "Show all the settings of the communication port."
msgstr "Show all the settings of the communication port."
#: cli/board/listall.go:45
#: cli/board/search.go:46
msgid "Show also boards marked as 'hidden' in the platform"
......@@ -1980,7 +2018,7 @@ msgstr "The connected devices search timeout, raise it if your board doesn't sho
msgid "The connected devices search timeout, raise it if your board doesn't show up e.g.: 10s"
msgstr "The connected devices search timeout, raise it if your board doesn't show up e.g.: 10s"
#: cli/cli.go:110
#: cli/cli.go:112
msgid "The custom config file (if not specified the default will be used)."
msgstr "The custom config file (if not specified the default will be used)."
......@@ -2000,8 +2038,8 @@ msgid "The key '%[1]v' is not a list of items, can't remove from it.\n"
msgstr "The key '%[1]v' is not a list of items, can't remove from it.\n"
"Maybe use '%[2]s'?"
#: cli/cli.go:108
#: cli/cli.go:109
#: cli/cli.go:110
#: cli/cli.go:111
msgid "The output format for the logs, can be: %s"
msgstr "The output format for the logs, can be: %s"
......@@ -2083,7 +2121,7 @@ msgstr "Unable to get Local App Data Folder: %v"
msgid "Unable to get user home dir: %v"
msgstr "Unable to get user home dir: %v"
#: cli/cli.go:199
#: cli/cli.go:201
msgid "Unable to open file for logging: %s"
msgstr "Unable to open file for logging: %s"
......@@ -2289,6 +2327,10 @@ msgstr "VERSION"
msgid "VERSION_NUMBER"
msgstr "VERSION_NUMBER"
#: cli/monitor/monitor.go:96
msgid "Values"
msgstr "Values"
#: cli/burnbootloader/burnbootloader.go:55
#: cli/compile/compile.go:105
#: cli/upload/upload.go:61
......@@ -2406,7 +2448,7 @@ msgstr "can't find latest release of %s"
msgid "can't find main Sketch file in %s"
msgstr "can't find main Sketch file in %s"
#: arduino/cores/packagemanager/loader.go:768
#: arduino/cores/packagemanager/loader.go:782
msgid "can't find pattern for discovery with id %s"
msgstr "can't find pattern for discovery with id %s"
......@@ -2436,7 +2478,7 @@ msgstr "checking local archive integrity"
msgid "cleaning build path"
msgstr "cleaning build path"
#: cli/cli.go:73
#: cli/cli.go:74
msgid "command"
msgstr "command"
......@@ -2489,7 +2531,7 @@ msgstr "computing hash: %s"
msgid "could not find a valid build artifact"
msgstr "could not find a valid build artifact"
#: arduino/cores/packagemanager/loader.go:705
#: arduino/cores/packagemanager/loader.go:719
msgid "creating discovery: %s"
msgstr "creating discovery: %s"
......@@ -2530,11 +2572,11 @@ msgstr "directory doesn't exist: %s"
msgid "discovery %[1]s process not started: %[2]w"
msgstr "discovery %[1]s process not started: %[2]w"
#: arduino/cores/packagemanager/loader.go:696
#: arduino/cores/packagemanager/loader.go:710
msgid "discovery not found: %s"
msgstr "discovery not found: %s"
#: arduino/cores/packagemanager/loader.go:700
#: arduino/cores/packagemanager/loader.go:714
msgid "discovery not installed: %s"
msgstr "discovery not installed: %s"
......@@ -2616,7 +2658,7 @@ msgstr "find abs path: %s"
msgid "first message must contain monitor configuration, not data"
msgstr "first message must contain monitor configuration, not data"
#: cli/cli.go:73
#: cli/cli.go:74
msgid "flags"
msgstr "flags"
......@@ -2671,7 +2713,7 @@ msgstr "getting build properties for board %[1]s: %[2]s"
msgid "getting discovery dependencies for platform %[1]s: %[2]s"
msgstr "getting discovery dependencies for platform %[1]s: %[2]s"
#: arduino/cores/packagemanager/loader.go:649
#: arduino/cores/packagemanager/loader.go:663
msgid "getting parent dir of %[1]s: %[2]s"
msgstr "getting parent dir of %[1]s: %[2]s"
......@@ -2788,6 +2830,10 @@ msgstr "invalid path writing inventory file: %[1]s error: %[2]w"
msgid "invalid platform archive size: %s"
msgstr "invalid platform archive size: %s"
#: arduino/cores/packagemanager/loader.go:369
msgid "invalid pluggable monitor reference: %s"
msgstr "invalid pluggable monitor reference: %s"
#: commands/upload/upload.go:483
msgid "invalid recipe '%[1]s': %[2]s"
msgstr "invalid recipe '%[1]s': %[2]s"
......@@ -2839,11 +2885,11 @@ msgstr "listing serial ports"
msgid "loading %[1]s: %[2]s"
msgstr "loading %[1]s: %[2]s"
#: arduino/cores/packagemanager/loader.go:356
#: arduino/cores/packagemanager/loader.go:357
msgid "loading boards: %s"
msgstr "loading boards: %s"
#: arduino/cores/packagemanager/loader.go:604
#: arduino/cores/packagemanager/loader.go:618
msgid "loading bundled tools from %[1]s: %[2]s"
msgstr "loading bundled tools from %[1]s: %[2]s"
......@@ -2870,7 +2916,7 @@ msgstr "loading platform release %[1]s: %[2]s"
msgid "loading platform.txt: %v"
msgstr "loading platform.txt: %v"
#: arduino/cores/packagemanager/loader.go:571
#: arduino/cores/packagemanager/loader.go:585
msgid "loading tool release in %[1]s: %[2]s"
msgstr "loading tool release in %[1]s: %[2]s"
......@@ -2923,7 +2969,7 @@ msgstr "no compatible version of %s tools found for the current os"
msgid "no executable specified"
msgstr "no executable specified"
#: commands/daemon/daemon.go:98
#: commands/daemon/daemon.go:99
msgid "no instance specified"
msgstr "no instance specified"
......@@ -3014,7 +3060,7 @@ msgstr "platform %s is not installed"
#: arduino/cores/packagemanager/install_uninstall.go:65
#: arduino/cores/packagemanager/install_uninstall.go:108
#: arduino/cores/packagemanager/loader.go:433
#: arduino/cores/packagemanager/loader.go:447
#: commands/compile/compile.go:127
msgid "platform not installed"
msgstr "platform not installed"
......@@ -3051,7 +3097,7 @@ msgstr "quitting discovery %[1]s: %[2]w"
msgid "reading %[1]s directory: %[2]s"
msgstr "reading %[1]s directory: %[2]s"
#: arduino/cores/packagemanager/loader.go:654
#: arduino/cores/packagemanager/loader.go:668
msgid "reading %[1]s: %[2]s"
msgstr "reading %[1]s: %[2]s"
......@@ -3061,7 +3107,7 @@ msgid "reading dir %[1]s: %[2]s"
msgstr "reading dir %[1]s: %[2]s"
#: arduino/cores/packagemanager/loader.go:162
#: arduino/cores/packagemanager/loader.go:562
#: arduino/cores/packagemanager/loader.go:576
msgid "reading directory %[1]s: %[2]s"
msgstr "reading directory %[1]s: %[2]s"
......@@ -3152,7 +3198,7 @@ msgstr "retrieving Arduino public keys: %s"
msgid "scanning examples: %s"
msgstr "scanning examples: %s"
#: arduino/cores/packagemanager/loader.go:640
#: arduino/cores/packagemanager/loader.go:654
msgid "searching for builtin_tools_versions.txt in %[1]s: %[2]s"
msgstr "searching for builtin_tools_versions.txt in %[1]s: %[2]s"
......@@ -3173,7 +3219,7 @@ msgstr "sketch path is not valid"
msgid "sketchPath"
msgstr "sketchPath"
#: arduino/cores/packagemanager/loader.go:496
#: arduino/cores/packagemanager/loader.go:510
msgid "skipping loading of boards %s: malformed custom board options"
msgstr "skipping loading of boards %s: malformed custom board options"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment