Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 47a858e

Browse files
committed
Added 'upload' flags to set upload fields value
1 parent c506f6a commit 47a858e

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

‎internal/cli/upload/upload.go‎

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ var (
5151

5252
// NewCommand created a new `upload` command
5353
func NewCommand() *cobra.Command {
54+
var uploadFields []string
55+
var parsedUploadFields map[string]string
5456
uploadCommand := &cobra.Command{
5557
Use: "upload",
5658
Short: tr("Upload Arduino sketches."),
@@ -59,8 +61,20 @@ func NewCommand() *cobra.Command {
5961
Args: cobra.MaximumNArgs(1),
6062
PreRun: func(cmd *cobra.Command, args []string) {
6163
arguments.CheckFlagsConflicts(cmd, "input-file", "input-dir")
64+
if len(uploadFields) > 0 {
65+
parsedUploadFields = map[string]string{}
66+
for _, field := range uploadFields {
67+
split := strings.SplitN(field, "=", 2)
68+
if len(split) != 2 {
69+
feedback.Fatal(tr("Invalid upload field: %s", field), feedback.ErrBadArgument)
70+
}
71+
parsedUploadFields[split[0]] = split[1]
72+
}
73+
}
74+
},
75+
Run: func(cmd *cobra.Command, args []string) {
76+
runUploadCommand(args, parsedUploadFields)
6277
},
63-
Run: runUploadCommand,
6478
}
6579

6680
fqbnArg.AddToCommand(uploadCommand)
@@ -73,10 +87,11 @@ func NewCommand() *cobra.Command {
7387
programmer.AddToCommand(uploadCommand)
7488
uploadCommand.Flags().BoolVar(&dryRun, "dry-run", false, tr("Do not perform the actual upload, just log out actions"))
7589
uploadCommand.Flags().MarkHidden("dry-run")
90+
uploadCommand.Flags().StringArrayVar(&uploadFields, "upload-field", uploadFields, tr("Set a value for a field required to upload.")+" (field=value)")
7691
return uploadCommand
7792
}
7893

79-
func runUploadCommand(command*cobra.Command, args []string) {
94+
func runUploadCommand(args []string, uploadFieldsArgsmap[string]string) {
8095
logrus.Info("Executing `arduino-cli upload`")
8196

8297
path := ""
@@ -147,12 +162,24 @@ func runUploadCommand(command *cobra.Command, args []string) {
147162

148163
fields := map[string]string{}
149164
if len(userFieldRes.UserFields) > 0 {
150-
feedback.Print(tr("Uploading to specified board using %s protocol requires the following info:", port.Protocol))
151-
if f, err := arguments.AskForUserFields(userFieldRes.UserFields); err != nil {
152-
msg := fmt.Sprintf("%s: %s", tr("Error getting user input"), err)
153-
feedback.Fatal(msg, feedback.ErrGeneric)
165+
if len(uploadFieldsArgs) > 0 {
166+
// If the user has specified some fields via cmd-line, we don't ask for them
167+
for _, field := range userFieldRes.UserFields {
168+
if value, ok := uploadFieldsArgs[field.Name]; ok {
169+
fields[field.Name] = value
170+
} else {
171+
feedback.Fatal(tr("Missing required upload field: %s", field.Name), feedback.ErrBadArgument)
172+
}
173+
}
154174
} else {
155-
fields = f
175+
// Otherwise prompt the user for them
176+
feedback.Print(tr("Uploading to specified board using %s protocol requires the following info:", port.Protocol))
177+
if f, err := arguments.AskForUserFields(userFieldRes.UserFields); err != nil {
178+
msg := fmt.Sprintf("%s: %s", tr("Error getting user input"), err)
179+
feedback.Fatal(msg, feedback.ErrGeneric)
180+
} else {
181+
fields = f
182+
}
156183
}
157184
}
158185

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /