@@ -30,35 +30,39 @@ import (
3030func initAttachCommand () * cobra.Command {
3131 var port arguments.Port
3232 var fqbn arguments.Fqbn
33+ var programmer arguments.Programmer
3334 attachCommand := & cobra.Command {
34- Use : fmt .Sprintf ("attach [-p <%s>] [-b <%s>] [%s] " , tr ("port" ), tr ("FQBN" ), tr ("sketchPath" )),
35+ Use : fmt .Sprintf ("attach [-p <%s>] [-b <%s>] [-P <%s>] [%s] " , tr ("port" ), tr ("FQBN" ), tr ( "programmer " ), tr ("sketchPath" )),
3536 Short : tr ("Attaches a sketch to a board." ),
36- Long : tr ("Sets the default values for port and FQBN. If no port or FQBN are specified, the current default port and FQBN are displayed." ),
37+ Long : tr ("Sets the default values for port and FQBN. If no port, FQBN or programmer are specified, the current default port, FQBN and programmer are displayed." ),
3738 Example : " " + os .Args [0 ] + " board attach -p /dev/ttyACM0\n " +
3839 " " + os .Args [0 ] + " board attach -p /dev/ttyACM0 HelloWorld\n " +
39- " " + os .Args [0 ] + " board attach -b arduino:samd:mkr1000" ,
40+ " " + os .Args [0 ] + " board attach -b arduino:samd:mkr1000" +
41+ " " + os .Args [0 ] + " board attach -P atmel_ice" ,
4042 Args : cobra .MaximumNArgs (1 ),
4143 Run : func (cmd * cobra.Command , args []string ) {
4244 sketchPath := ""
4345 if len (args ) > 0 {
4446 sketchPath = args [0 ]
4547 }
46- runAttachCommand (sketchPath , & port , fqbn .String ())
48+ runAttachCommand (sketchPath , & port , fqbn .String (), & programmer )
4749 },
4850 }
4951 fqbn .AddToCommand (attachCommand )
5052 port .AddToCommand (attachCommand )
53+ programmer .AddToCommand (attachCommand )
5154
5255 return attachCommand
5356}
5457
55- func runAttachCommand (path string , port * arguments.Port , fqbn string ) {
58+ func runAttachCommand (path string , port * arguments.Port , fqbn string , programmer * arguments. Programmer ) {
5659 sketchPath := arguments .InitSketchPath (path )
5760
5861 portAddress , portProtocol , _ := port .GetPortAddressAndProtocol (nil , "" , "" )
5962 newDefaults , err := sketch .SetSketchDefaults (context .Background (), & rpc.SetSketchDefaultsRequest {
6063 SketchPath : sketchPath .String (),
6164 DefaultFqbn : fqbn ,
65+ DefaultProgrammer : programmer .GetProgrammer (),
6266 DefaultPortAddress : portAddress ,
6367 DefaultPortProtocol : portProtocol ,
6468 })
@@ -67,7 +71,8 @@ func runAttachCommand(path string, port *arguments.Port, fqbn string) {
6771 }
6872
6973 res := & boardAttachResult {
70- Fqbn : newDefaults .GetDefaultFqbn (),
74+ Fqbn : newDefaults .GetDefaultFqbn (),
75+ Programmer : newDefaults .GetDefaultProgrammer (),
7176 }
7277 if newDefaults .GetDefaultPortAddress () != "" {
7378 res .Port = & boardAttachPortResult {
@@ -92,19 +97,21 @@ func (b *boardAttachPortResult) String() string {
9297}
9398
9499type boardAttachResult struct {
95- Fqbn string `json:"fqbn,omitempty"`
96- Port * boardAttachPortResult `json:"port,omitempty"`
100+ Fqbn string `json:"fqbn,omitempty"`
101+ Programmer string `json:"programmer,omitempty"`
102+ Port * boardAttachPortResult `json:"port,omitempty"`
97103}
98104
99105func (b * boardAttachResult ) Data () interface {} {
100106 return b
101107}
102108
103109func (b * boardAttachResult ) String () string {
104- if b .Port == nil && b .Fqbn == "" {
105- return tr ("No default port or FQBN set" )
110+ if b .Port == nil && b .Fqbn == "" && b . Programmer == "" {
111+ return tr ("No default port, FQBN or programmer set" )
106112 }
107113 res := fmt .Sprintf ("%s: %s\n " , tr ("Default port set to" ), b .Port )
108114 res += fmt .Sprintf ("%s: %s\n " , tr ("Default FQBN set to" ), b .Fqbn )
115+ res += fmt .Sprintf ("%s: %s\n " , tr ("Default programmer set to" ), b .Programmer )
109116 return res
110117}
0 commit comments