@@ -22,6 +22,7 @@ import (
22
22
23
23
"github.com/arduino/arduino-cli/commands/board"
24
24
"github.com/arduino/arduino-cli/internal/cli/arguments"
25
+ "github.com/arduino/arduino-cli/internal/cli/compile"
25
26
"github.com/arduino/arduino-cli/internal/cli/feedback"
26
27
"github.com/arduino/arduino-cli/internal/cli/instance"
27
28
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
@@ -35,43 +36,52 @@ func initDetailsCommand() *cobra.Command {
35
36
var showFullDetails bool
36
37
var listProgrammers bool
37
38
var fqbn arguments.Fqbn
39
+ var showProperties arguments.ShowProperties
38
40
var detailsCommand = & cobra.Command {
39
41
Use : fmt .Sprintf ("details -b <%s>" , tr ("FQBN" )),
40
42
Short : tr ("Print details about a board." ),
41
43
Long : tr ("Show information about a board, in particular if the board has options to be specified in the FQBN." ),
42
44
Example : " " + os .Args [0 ] + " board details -b arduino:avr:nano" ,
43
45
Args : cobra .NoArgs ,
44
46
Run : func (cmd * cobra.Command , args []string ) {
45
- runDetailsCommand (fqbn .String (), showFullDetails , listProgrammers )
47
+ runDetailsCommand (fqbn .String (), showFullDetails , listProgrammers , showProperties )
46
48
},
47
49
}
48
50
49
51
fqbn .AddToCommand (detailsCommand )
50
52
detailsCommand .Flags ().BoolVarP (& showFullDetails , "full" , "f" , false , tr ("Show full board details" ))
51
53
detailsCommand .Flags ().BoolVarP (& listProgrammers , "list-programmers" , "" , false , tr ("Show list of available programmers" ))
52
54
detailsCommand .MarkFlagRequired ("fqbn" )
53
-
55
+ showProperties . AddToCommand ( detailsCommand )
54
56
return detailsCommand
55
57
}
56
58
57
- func runDetailsCommand (fqbn string , showFullDetails , listProgrammers bool ) {
59
+ func runDetailsCommand (fqbn string , showFullDetails , listProgrammers bool , showProperties arguments. ShowProperties ) {
58
60
inst := instance .CreateAndInit ()
59
61
60
62
logrus .Info ("Executing `arduino-cli board details`" )
61
63
64
+ showPropertiesMode , err := showProperties .Get ()
65
+ if err != nil {
66
+ feedback .Fatal (err .Error (), feedback .ErrBadArgument )
67
+ }
62
68
res , err := board .Details (context .Background (), & rpc.BoardDetailsRequest {
63
69
Instance : inst ,
64
70
Fqbn : fqbn ,
65
71
})
66
-
67
72
if err != nil {
68
73
feedback .Fatal (tr ("Error getting board details: %v" , err ), feedback .ErrGeneric )
69
74
}
70
75
76
+ if showPropertiesMode == arguments .ShowPropertiesExpanded {
77
+ res .BuildProperties , _ = compile .ExpandBuildProperties (res .GetBuildProperties ())
78
+ }
79
+
71
80
feedback .PrintResult (detailsResult {
72
81
details : res ,
73
82
listProgrammers : listProgrammers ,
74
83
showFullDetails : showFullDetails ,
84
+ showProperties : showPropertiesMode != arguments .ShowPropertiesDisabled ,
75
85
})
76
86
}
77
87
@@ -81,6 +91,7 @@ type detailsResult struct {
81
91
details * rpc.BoardDetailsResponse
82
92
listProgrammers bool
83
93
showFullDetails bool
94
+ showProperties bool
84
95
}
85
96
86
97
func (dr detailsResult ) Data () interface {} {
@@ -90,6 +101,14 @@ func (dr detailsResult) Data() interface{} {
90
101
func (dr detailsResult ) String () string {
91
102
details := dr .details
92
103
104
+ if dr .showProperties {
105
+ res := ""
106
+ for _ , prop := range details .GetBuildProperties () {
107
+ res += fmt .Sprintln (prop )
108
+ }
109
+ return res
110
+ }
111
+
93
112
if dr .listProgrammers {
94
113
t := table .New ()
95
114
t .AddRow (tr ("Id" ), tr ("Programmer name" ))
0 commit comments