Skip to content

Commit 049861a

Browse files
remove sketch flag
1 parent 41c4c56 commit 049861a

File tree

1 file changed

+65
-21
lines changed

1 file changed

+65
-21
lines changed

internal/cli/monitor/monitor.go

+65-21
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
"time"
2828

2929
"github.com/arduino/arduino-cli/commands/monitor"
30-
"github.com/arduino/arduino-cli/commands/sketch"
30+
sk "github.com/arduino/arduino-cli/commands/sketch"
3131
"github.com/arduino/arduino-cli/configuration"
3232
"github.com/arduino/arduino-cli/i18n"
3333
"github.com/arduino/arduino-cli/internal/cli/arguments"
@@ -46,14 +46,14 @@ var tr = i18n.Tr
4646
// NewCommand created a new `monitor` command
4747
func NewCommand() *cobra.Command {
4848
var (
49-
raw bool
5049
portArgs arguments.Port
50+
fqbnArg arguments.Fqbn
51+
profileArg arguments.Profile
52+
raw bool
5153
describe bool
5254
configs []string
5355
quiet bool
5456
timestamp bool
55-
fqbn arguments.Fqbn
56-
sketchPath string
5757
)
5858
monitorCommand := &cobra.Command{
5959
Use: "monitor",
@@ -63,47 +63,91 @@ func NewCommand() *cobra.Command {
6363
" " + os.Args[0] + " monitor -p /dev/ttyACM0\n" +
6464
" " + os.Args[0] + " monitor -p /dev/ttyACM0 --describe",
6565
Run: func(cmd *cobra.Command, args []string) {
66-
runMonitorCmd(&portArgs, &fqbn, configs, describe, timestamp, quiet, raw, sketchPath)
66+
sketchPath := ""
67+
if len(args) > 0 {
68+
sketchPath = args[0]
69+
}
70+
var portProvidedFromFlag bool
71+
if p := cmd.Flags().Lookup("port"); p != nil && p.Changed {
72+
portProvidedFromFlag = true
73+
}
74+
runMonitorCmd(&portArgs, &fqbnArg, &profileArg, sketchPath, configs, describe, timestamp, quiet, raw, portProvidedFromFlag)
6775
},
6876
}
6977
portArgs.AddToCommand(monitorCommand)
78+
profileArg.AddToCommand(monitorCommand)
7079
monitorCommand.Flags().BoolVar(&raw, "raw", false, tr("Set terminal in raw mode (unbuffered)."))
7180
monitorCommand.Flags().BoolVar(&describe, "describe", false, tr("Show all the settings of the communication port."))
7281
monitorCommand.Flags().StringSliceVarP(&configs, "config", "c", []string{}, tr("Configure communication port settings. The format is <ID>=<value>[,<ID>=<value>]..."))
7382
monitorCommand.Flags().BoolVarP(&quiet, "quiet", "q", false, tr("Run in silent mode, show only monitor input and output."))
7483
monitorCommand.Flags().BoolVar(&timestamp, "timestamp", false, tr("Timestamp each incoming line."))
75-
monitorCommand.Flags().StringVarP(&sketchPath, "sketch", "s", "", tr("Path to the sketch"))
76-
fqbn.AddToCommand(monitorCommand)
84+
fqbnArg.AddToCommand(monitorCommand)
7785
return monitorCommand
7886
}
7987

80-
func runMonitorCmd(portArgs *arguments.Port, fqbn *arguments.Fqbn, configs []string, describe, timestamp, quiet, raw bool, sketchPath string) {
81-
instance := instance.CreateAndInit()
88+
func runMonitorCmd(
89+
portArgs *arguments.Port, fqbnArg *arguments.Fqbn, profileArg *arguments.Profile, sketchPathArg string,
90+
configs []string, describe, timestamp, quiet, raw bool, portProvidedFromFlag bool,
91+
) {
8292
logrus.Info("Executing `arduino-cli monitor`")
8393

8494
if !configuration.HasConsole {
8595
quiet = true
8696
}
8797

88-
addressDefault := ""
89-
protocolDefault := ""
90-
if sketchPath != "" {
91-
sketch, err := sketch.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath})
98+
var (
99+
inst *rpc.Instance
100+
fqbn string
101+
defaultPort, defaultProtocol string
102+
)
103+
104+
if !portProvidedFromFlag {
105+
sketchPath := arguments.InitSketchPath(sketchPathArg)
106+
sketch, err := sk.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
92107
if err != nil {
93-
feedback.FatalError(err, feedback.ErrGeneric)
108+
feedback.Fatal(
109+
tr("Error getting default port from `sketch.yaml`. Check if you're in the correct sketch folder or provide the --port flag: %s", err),
110+
feedback.ErrGeneric,
111+
)
112+
}
113+
defaultPort = sketch.GetDefaultPort()
114+
defaultProtocol = sketch.GetDefaultProtocol()
115+
116+
var profile *rpc.Profile
117+
if profileArg.Get() == "" {
118+
inst, profile = instance.CreateAndInitWithProfile(sketch.GetDefaultProfile().GetName(), sketchPath)
119+
} else {
120+
inst, profile = instance.CreateAndInitWithProfile(profileArg.Get(), sketchPath)
121+
}
122+
123+
// Priority on how to retrieve the fqbn
124+
// 1. from flag
125+
// 2. from profile
126+
// 3. from default_fqbn specified in the sketch.yaml
127+
// 4. try to detect from the port
128+
switch {
129+
case fqbnArg.String() != "":
130+
fqbn = fqbnArg.String()
131+
case profile.GetFqbn() != "":
132+
fqbn = profile.GetFqbn()
133+
case sketch.GetDefaultFqbn() != "":
134+
fqbn = sketch.GetDefaultFqbn()
135+
default:
136+
fqbn, _ = portArgs.DetectFQBN(inst)
94137
}
95-
addressDefault = sketch.GetDefaultPort()
96-
protocolDefault = sketch.GetDefaultProtocol()
138+
} else {
139+
inst = instance.CreateAndInit()
140+
fqbn = fqbnArg.String()
97141
}
98-
portAddress, portProtocol, err := portArgs.GetPortAddressAndProtocol(instance, addressDefault, protocolDefault)
142+
portAddress, portProtocol, err := portArgs.GetPortAddressAndProtocol(inst, defaultPort, defaultProtocol)
99143
if err != nil {
100144
feedback.FatalError(err, feedback.ErrGeneric)
101145
}
102146

103147
enumerateResp, err := monitor.EnumerateMonitorPortSettings(context.Background(), &rpc.EnumerateMonitorPortSettingsRequest{
104-
Instance: instance,
148+
Instance: inst,
105149
PortProtocol: portProtocol,
106-
Fqbn: fqbn.String(),
150+
Fqbn: fqbn,
107151
})
108152
if err != nil {
109153
feedback.Fatal(tr("Error getting port settings details: %s", err), feedback.ErrGeneric)
@@ -155,9 +199,9 @@ func runMonitorCmd(portArgs *arguments.Port, fqbn *arguments.Fqbn, configs []str
155199
}
156200
}
157201
portProxy, _, err := monitor.Monitor(context.Background(), &rpc.MonitorRequest{
158-
Instance: instance,
202+
Instance: inst,
159203
Port: &rpc.Port{Address: portAddress, Protocol: portProtocol},
160-
Fqbn: fqbn.String(),
204+
Fqbn: fqbn,
161205
PortConfiguration: configuration,
162206
})
163207
if err != nil {

0 commit comments

Comments
 (0)