@@ -27,6 +27,7 @@ import (
27
27
"time"
28
28
29
29
"github.com/arduino/arduino-cli/commands/monitor"
30
+ "github.com/arduino/arduino-cli/commands/sketch"
30
31
"github.com/arduino/arduino-cli/configuration"
31
32
"github.com/arduino/arduino-cli/i18n"
32
33
"github.com/arduino/arduino-cli/internal/cli/arguments"
@@ -45,13 +46,14 @@ var tr = i18n.Tr
45
46
// NewCommand created a new `monitor` command
46
47
func NewCommand () * cobra.Command {
47
48
var (
48
- raw bool
49
- portArgs arguments.Port
50
- describe bool
51
- configs []string
52
- quiet bool
53
- timestamp bool
54
- fqbn arguments.Fqbn
49
+ raw bool
50
+ portArgs arguments.Port
51
+ describe bool
52
+ configs []string
53
+ quiet bool
54
+ timestamp bool
55
+ fqbn arguments.Fqbn
56
+ sketchPath string
55
57
)
56
58
monitorCommand := & cobra.Command {
57
59
Use : "monitor" ,
@@ -61,7 +63,7 @@ func NewCommand() *cobra.Command {
61
63
" " + os .Args [0 ] + " monitor -p /dev/ttyACM0\n " +
62
64
" " + os .Args [0 ] + " monitor -p /dev/ttyACM0 --describe" ,
63
65
Run : func (cmd * cobra.Command , args []string ) {
64
- runMonitorCmd (& portArgs , & fqbn , configs , describe , timestamp , quiet , raw )
66
+ runMonitorCmd (& portArgs , & fqbn , configs , describe , timestamp , quiet , raw , sketchPath )
65
67
},
66
68
}
67
69
portArgs .AddToCommand (monitorCommand )
@@ -70,21 +72,30 @@ func NewCommand() *cobra.Command {
70
72
monitorCommand .Flags ().StringSliceVarP (& configs , "config" , "c" , []string {}, tr ("Configure communication port settings. The format is <ID>=<value>[,<ID>=<value>]..." ))
71
73
monitorCommand .Flags ().BoolVarP (& quiet , "quiet" , "q" , false , tr ("Run in silent mode, show only monitor input and output." ))
72
74
monitorCommand .Flags ().BoolVar (& timestamp , "timestamp" , false , tr ("Timestamp each incoming line." ))
75
+ monitorCommand .Flags ().StringVarP (& sketchPath , "sketch" , "s" , "" , tr ("Path to the sketch" ))
73
76
fqbn .AddToCommand (monitorCommand )
74
- monitorCommand .MarkFlagRequired ("port" )
75
77
return monitorCommand
76
78
}
77
79
78
- func runMonitorCmd (portArgs * arguments.Port , fqbn * arguments.Fqbn , configs []string , describe , timestamp , quiet , raw bool ) {
80
+ func runMonitorCmd (portArgs * arguments.Port , fqbn * arguments.Fqbn , configs []string , describe , timestamp , quiet , raw bool , sketchPath string ) {
79
81
instance := instance .CreateAndInit ()
80
82
logrus .Info ("Executing `arduino-cli monitor`" )
81
83
82
84
if ! configuration .HasConsole {
83
85
quiet = true
84
86
}
85
87
86
- // TODO: Should use sketch default_port/protocol?
87
- portAddress , portProtocol , err := portArgs .GetPortAddressAndProtocol (instance , "" , "" )
88
+ addressDefault := ""
89
+ protocolDefault := ""
90
+ if sketchPath != "" {
91
+ sketch , err := sketch .LoadSketch (context .Background (), & rpc.LoadSketchRequest {SketchPath : sketchPath })
92
+ if err != nil {
93
+ feedback .FatalError (err , feedback .ErrGeneric )
94
+ }
95
+ addressDefault = sketch .GetDefaultPort ()
96
+ protocolDefault = sketch .GetDefaultProtocol ()
97
+ }
98
+ portAddress , portProtocol , err := portArgs .GetPortAddressAndProtocol (instance , addressDefault , protocolDefault )
88
99
if err != nil {
89
100
feedback .FatalError (err , feedback .ErrGeneric )
90
101
}
0 commit comments