diff --git a/cli/dashboard/create.go b/cli/dashboard/create.go index e94de9f5..f306e4c0 100644 --- a/cli/dashboard/create.go +++ b/cli/dashboard/create.go @@ -25,6 +25,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/dashboard" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -56,6 +57,12 @@ func initCreateCommand() *cobra.Command { func runCreateCommand(cmd *cobra.Command, args []string) { logrus.Infof("Creating dashboard from template %s", createFlags.template) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during dashboard create: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &dashboard.CreateParams{ Template: createFlags.template, Override: createFlags.override, @@ -64,7 +71,7 @@ func runCreateCommand(cmd *cobra.Command, args []string) { params.Name = &createFlags.name } - dashboard, err := dashboard.Create(params) + dashboard, err := dashboard.Create(params, cred) if err != nil { feedback.Errorf("Error during dashboard create: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/dashboard/delete.go b/cli/dashboard/delete.go index dcae1cb3..387d7084 100644 --- a/cli/dashboard/delete.go +++ b/cli/dashboard/delete.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/dashboard" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -46,8 +47,14 @@ func initDeleteCommand() *cobra.Command { func runDeleteCommand(cmd *cobra.Command, args []string) { logrus.Infof("Deleting dashboard %s", deleteFlags.id) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during dashboard delete: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &dashboard.DeleteParams{ID: deleteFlags.id} - err := dashboard.Delete(params) + err = dashboard.Delete(params, cred) if err != nil { feedback.Errorf("Error during dashboard delete: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/dashboard/extract.go b/cli/dashboard/extract.go index 281e4bc0..0fec589b 100644 --- a/cli/dashboard/extract.go +++ b/cli/dashboard/extract.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/dashboard" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" "gopkg.in/yaml.v3" @@ -48,11 +49,17 @@ func initExtractCommand() *cobra.Command { func runExtractCommand(cmd *cobra.Command, args []string) { logrus.Infof("Extracting template from dashboard %s", extractFlags.id) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during dashboard extract: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &dashboard.ExtractParams{ ID: extractFlags.id, } - template, err := dashboard.Extract(params) + template, err := dashboard.Extract(params, cred) if err != nil { feedback.Errorf("Error during template extraction: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/dashboard/list.go b/cli/dashboard/list.go index f68abae6..37516a98 100644 --- a/cli/dashboard/list.go +++ b/cli/dashboard/list.go @@ -26,6 +26,7 @@ import ( "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cli/table" "github.com/arduino/arduino-cloud-cli/command/dashboard" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -53,7 +54,13 @@ func initListCommand() *cobra.Command { func runListCommand(cmd *cobra.Command, args []string) { logrus.Info("Listing dashboards") - dash, err := dashboard.List() + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during dashboard list: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + dash, err := dashboard.List(cred) if err != nil { feedback.Errorf("Error during dashboard list: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/create.go b/cli/device/create.go index 01f0196c..38603cb7 100644 --- a/cli/device/create.go +++ b/cli/device/create.go @@ -24,6 +24,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/device" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -51,6 +52,12 @@ func initCreateCommand() *cobra.Command { func runCreateCommand(cmd *cobra.Command, args []string) { logrus.Infof("Creating device with name %s", createFlags.name) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device create: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &device.CreateParams{ Name: createFlags.name, } @@ -61,7 +68,7 @@ func runCreateCommand(cmd *cobra.Command, args []string) { params.FQBN = &createFlags.fqbn } - dev, err := device.Create(params) + dev, err := device.Create(params, cred) if err != nil { feedback.Errorf("Error during device create: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/creategeneric.go b/cli/device/creategeneric.go index d10325c5..e930a357 100644 --- a/cli/device/creategeneric.go +++ b/cli/device/creategeneric.go @@ -24,6 +24,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/device" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -49,12 +50,18 @@ func initCreateGenericCommand() *cobra.Command { func runCreateGenericCommand(cmd *cobra.Command, args []string) { logrus.Infof("Creating generic device with name %s", createGenericFlags.name) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device create-generic: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &device.CreateGenericParams{ Name: createGenericFlags.name, FQBN: createGenericFlags.fqbn, } - dev, err := device.CreateGeneric(params) + dev, err := device.CreateGeneric(params, cred) if err != nil { feedback.Errorf("Error during device create-generic: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/createlora.go b/cli/device/createlora.go index 640863c4..30fc7837 100644 --- a/cli/device/createlora.go +++ b/cli/device/createlora.go @@ -24,6 +24,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/device" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -55,6 +56,12 @@ func initCreateLoraCommand() *cobra.Command { func runCreateLoraCommand(cmd *cobra.Command, args []string) { logrus.Infof("Creating LoRa device with name %s", createLoraFlags.name) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device create-lora: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &device.CreateLoraParams{ CreateParams: device.CreateParams{ Name: createLoraFlags.name, @@ -68,7 +75,7 @@ func runCreateLoraCommand(cmd *cobra.Command, args []string) { params.FQBN = &createLoraFlags.fqbn } - dev, err := device.CreateLora(params) + dev, err := device.CreateLora(params, cred) if err != nil { feedback.Errorf("Error during device create-lora: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/delete.go b/cli/device/delete.go index ea63a4a4..2d7d592e 100644 --- a/cli/device/delete.go +++ b/cli/device/delete.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/device" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -54,12 +55,18 @@ func initDeleteCommand() *cobra.Command { func runDeleteCommand(cmd *cobra.Command, args []string) { logrus.Infof("Deleting device %s", deleteFlags.id) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device delete: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &device.DeleteParams{Tags: deleteFlags.tags} if deleteFlags.id != "" { params.ID = &deleteFlags.id } - err := device.Delete(params) + err = device.Delete(params, cred) if err != nil { feedback.Errorf("Error during device delete: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/list.go b/cli/device/list.go index 718f17f3..d7644bc2 100644 --- a/cli/device/list.go +++ b/cli/device/list.go @@ -25,6 +25,7 @@ import ( "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cli/table" "github.com/arduino/arduino-cloud-cli/command/device" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -53,8 +54,14 @@ func initListCommand() *cobra.Command { func runListCommand(cmd *cobra.Command, args []string) { logrus.Info("Listing devices") + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device list: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &device.ListParams{Tags: listFlags.tags} - devs, err := device.List(params) + devs, err := device.List(params, cred) if err != nil { feedback.Errorf("Error during device list: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/listfrequency.go b/cli/device/listfrequency.go index 32140dc9..e3afc381 100644 --- a/cli/device/listfrequency.go +++ b/cli/device/listfrequency.go @@ -24,6 +24,7 @@ import ( "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cli/table" "github.com/arduino/arduino-cloud-cli/command/device" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -41,7 +42,13 @@ func initListFrequencyPlansCommand() *cobra.Command { func runListFrequencyPlansCommand(cmd *cobra.Command, args []string) { logrus.Info("Listing supported frequency plans") - freqs, err := device.ListFrequencyPlans() + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device list-frequency-plans: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + freqs, err := device.ListFrequencyPlans(cred) if err != nil { feedback.Errorf("Error during device list-frequency-plans: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/tag/create.go b/cli/device/tag/create.go index 3094fea7..baee7c3b 100644 --- a/cli/device/tag/create.go +++ b/cli/device/tag/create.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/tag" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -60,7 +61,13 @@ func runCreateTagsCommand(cmd *cobra.Command, args []string) { Resource: tag.Device, } - err := tag.CreateTags(params) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device create-tags: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + err = tag.CreateTags(params, cred) if err != nil { feedback.Errorf("Error during device create-tags: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/device/tag/delete.go b/cli/device/tag/delete.go index 99075ce6..56c195db 100644 --- a/cli/device/tag/delete.go +++ b/cli/device/tag/delete.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/tag" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -51,13 +52,19 @@ func InitDeleteTagsCommand() *cobra.Command { func runDeleteTagsCommand(cmd *cobra.Command, args []string) { logrus.Infof("Deleting tags with keys %s", deleteTagsFlags.keys) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device delete-tags: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &tag.DeleteTagsParams{ ID: deleteTagsFlags.id, Keys: deleteTagsFlags.keys, Resource: tag.Device, } - err := tag.DeleteTags(params) + err = tag.DeleteTags(params, cred) if err != nil { feedback.Errorf("Error during device delete-tags: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/ota/massupload.go b/cli/ota/massupload.go index 551a404d..cb84ab53 100644 --- a/cli/ota/massupload.go +++ b/cli/ota/massupload.go @@ -27,6 +27,7 @@ import ( "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cli/table" "github.com/arduino/arduino-cloud-cli/command/ota" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -74,7 +75,13 @@ func runMassUploadCommand(cmd *cobra.Command, args []string) { FQBN: massUploadFlags.fqbn, } - resp, err := ota.MassUpload(params) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during device list-frequency-plans: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + resp, err := ota.MassUpload(params, cred) if err != nil { feedback.Errorf("Error during ota upload: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/ota/upload.go b/cli/ota/upload.go index 03e131ce..17547386 100644 --- a/cli/ota/upload.go +++ b/cli/ota/upload.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/ota" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -53,12 +54,18 @@ func initUploadCommand() *cobra.Command { func runUploadCommand(cmd *cobra.Command, args []string) { logrus.Infof("Uploading binary %s to device %s", uploadFlags.file, uploadFlags.deviceID) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during ota upload: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &ota.UploadParams{ DeviceID: uploadFlags.deviceID, File: uploadFlags.file, Deferred: uploadFlags.deferred, } - err := ota.Upload(params) + err = ota.Upload(params, cred) if err != nil { feedback.Errorf("Error during ota upload: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/bind.go b/cli/thing/bind.go index e51b2889..472105d4 100644 --- a/cli/thing/bind.go +++ b/cli/thing/bind.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/thing" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -49,11 +50,17 @@ func initBindCommand() *cobra.Command { func runBindCommand(cmd *cobra.Command, args []string) { logrus.Infof("Binding thing %s to device %s", bindFlags.id, bindFlags.deviceID) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during thing bind: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &thing.BindParams{ ID: bindFlags.id, DeviceID: bindFlags.deviceID, } - err := thing.Bind(params) + err = thing.Bind(params, cred) if err != nil { feedback.Errorf("Error during thing bind: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/clone.go b/cli/thing/clone.go index da684032..0fb8f097 100644 --- a/cli/thing/clone.go +++ b/cli/thing/clone.go @@ -25,6 +25,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/thing" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -51,12 +52,18 @@ func initCloneCommand() *cobra.Command { func runCloneCommand(cmd *cobra.Command, args []string) { logrus.Infof("Cloning thing %s into a new thing called %s", cloneFlags.cloneID, cloneFlags.name) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during thing clone: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &thing.CloneParams{ Name: cloneFlags.name, CloneID: cloneFlags.cloneID, } - thing, err := thing.Clone(params) + thing, err := thing.Clone(params, cred) if err != nil { feedback.Errorf("Error during thing clone: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/create.go b/cli/thing/create.go index df6c8334..c9d51117 100644 --- a/cli/thing/create.go +++ b/cli/thing/create.go @@ -25,6 +25,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/thing" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -56,6 +57,12 @@ func initCreateCommand() *cobra.Command { func runCreateCommand(cmd *cobra.Command, args []string) { logrus.Infof("Creating thing from template %s", createFlags.template) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during thing create: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &thing.CreateParams{ Template: createFlags.template, } @@ -63,7 +70,7 @@ func runCreateCommand(cmd *cobra.Command, args []string) { params.Name = &createFlags.name } - thing, err := thing.Create(params) + thing, err := thing.Create(params, cred) if err != nil { feedback.Errorf("Error during thing create: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/delete.go b/cli/thing/delete.go index 26507a32..7c934243 100644 --- a/cli/thing/delete.go +++ b/cli/thing/delete.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/thing" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -54,12 +55,18 @@ func initDeleteCommand() *cobra.Command { func runDeleteCommand(cmd *cobra.Command, args []string) { logrus.Infof("Deleting thing %s", deleteFlags.id) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during thing delete: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &thing.DeleteParams{Tags: deleteFlags.tags} if deleteFlags.id != "" { params.ID = &deleteFlags.id } - err := thing.Delete(params) + err = thing.Delete(params, cred) if err != nil { feedback.Errorf("Error during thing delete: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/extract.go b/cli/thing/extract.go index 9cf5a57e..e51738be 100644 --- a/cli/thing/extract.go +++ b/cli/thing/extract.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/thing" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" "gopkg.in/yaml.v3" @@ -48,11 +49,17 @@ func initExtractCommand() *cobra.Command { func runExtractCommand(cmd *cobra.Command, args []string) { logrus.Infof("Extracting template from thing %s", extractFlags.id) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during template extraction: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &thing.ExtractParams{ ID: extractFlags.id, } - template, err := thing.Extract(params) + template, err := thing.Extract(params, cred) if err != nil { feedback.Errorf("Error during template extraction: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/list.go b/cli/thing/list.go index a99c04a0..9736ce52 100644 --- a/cli/thing/list.go +++ b/cli/thing/list.go @@ -25,6 +25,7 @@ import ( "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cli/table" "github.com/arduino/arduino-cloud-cli/command/thing" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -61,6 +62,12 @@ func initListCommand() *cobra.Command { func runListCommand(cmd *cobra.Command, args []string) { logrus.Info("Listing things") + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during thing list: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &thing.ListParams{ IDs: listFlags.ids, Variables: listFlags.variables, @@ -70,7 +77,7 @@ func runListCommand(cmd *cobra.Command, args []string) { params.DeviceID = &listFlags.deviceID } - things, err := thing.List(params) + things, err := thing.List(params, cred) if err != nil { feedback.Errorf("Error during thing list: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/tag/create.go b/cli/thing/tag/create.go index eddf4c9c..3e69e374 100644 --- a/cli/thing/tag/create.go +++ b/cli/thing/tag/create.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/tag" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -60,7 +61,13 @@ func runCreateTagsCommand(cmd *cobra.Command, args []string) { Resource: tag.Thing, } - err := tag.CreateTags(params) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during thing create-tags: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + err = tag.CreateTags(params, cred) if err != nil { feedback.Errorf("Error during thing create-tags: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/cli/thing/tag/delete.go b/cli/thing/tag/delete.go index 45ba52bc..4da76c25 100644 --- a/cli/thing/tag/delete.go +++ b/cli/thing/tag/delete.go @@ -23,6 +23,7 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cloud-cli/command/tag" + "github.com/arduino/arduino-cloud-cli/internal/config" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -51,13 +52,19 @@ func InitDeleteTagsCommand() *cobra.Command { func runDeleteTagsCommand(cmd *cobra.Command, args []string) { logrus.Infof("Deleting tags with keys %s", deleteTagsFlags.keys) + cred, err := config.RetrieveCredentials() + if err != nil { + feedback.Errorf("Error during thing delete-tags: retrieving credentials: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + params := &tag.DeleteTagsParams{ ID: deleteTagsFlags.id, Keys: deleteTagsFlags.keys, Resource: tag.Thing, } - err := tag.DeleteTags(params) + err = tag.DeleteTags(params, cred) if err != nil { feedback.Errorf("Error during thing delete-tags: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/command/dashboard/create.go b/command/dashboard/create.go index 17ad1fe2..be733337 100644 --- a/command/dashboard/create.go +++ b/command/dashboard/create.go @@ -33,12 +33,8 @@ type CreateParams struct { } // Create allows to create a new dashboard. -func Create(params *CreateParams) (*DashboardInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Create(params *CreateParams, cred *config.Credentials) (*DashboardInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/dashboard/delete.go b/command/dashboard/delete.go index f4dc7069..60b29526 100644 --- a/command/dashboard/delete.go +++ b/command/dashboard/delete.go @@ -30,12 +30,8 @@ type DeleteParams struct { // Delete command is used to delete a dashboard // from Arduino IoT Cloud. -func Delete(params *DeleteParams) error { - conf, err := config.RetrieveCredentials() - if err != nil { - return err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Delete(params *DeleteParams, cred *config.Credentials) error { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return err } diff --git a/command/dashboard/extract.go b/command/dashboard/extract.go index b1a3f38c..125702b5 100644 --- a/command/dashboard/extract.go +++ b/command/dashboard/extract.go @@ -33,12 +33,8 @@ type ExtractParams struct { // Extract command is used to extract a dashboard template // from a dashboard on Arduino IoT Cloud. -func Extract(params *ExtractParams) (map[string]interface{}, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Extract(params *ExtractParams, cred *config.Credentials) (map[string]interface{}, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/dashboard/list.go b/command/dashboard/list.go index aa737e73..4d9cb2e8 100644 --- a/command/dashboard/list.go +++ b/command/dashboard/list.go @@ -24,12 +24,8 @@ import ( // List command is used to list // the dashboards of Arduino IoT Cloud. -func List() ([]DashboardInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func List(cred *config.Credentials) ([]DashboardInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/device/create.go b/command/device/create.go index 0c218402..3c8ebefb 100644 --- a/command/device/create.go +++ b/command/device/create.go @@ -37,7 +37,7 @@ type CreateParams struct { // Create command is used to provision a new arduino device // and to add it to Arduino IoT Cloud. -func Create(params *CreateParams) (*DeviceInfo, error) { +func Create(params *CreateParams, cred *config.Credentials) (*DeviceInfo, error) { comm, err := cli.NewCommander() if err != nil { return nil, err @@ -63,11 +63,7 @@ func Create(params *CreateParams) (*DeviceInfo, error) { ) } - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/device/creategeneric.go b/command/device/creategeneric.go index 0ed59b72..e0b3b08b 100644 --- a/command/device/creategeneric.go +++ b/command/device/creategeneric.go @@ -43,12 +43,8 @@ type DeviceGenericInfo struct { } // CreateGeneric command is used to add a new generic device to Arduino IoT Cloud. -func CreateGeneric(params *CreateGenericParams) (*DeviceGenericInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func CreateGeneric(params *CreateGenericParams, cred *config.Credentials) (*DeviceGenericInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/device/createlora.go b/command/device/createlora.go index b37cf245..3a0c3e36 100644 --- a/command/device/createlora.go +++ b/command/device/createlora.go @@ -62,7 +62,7 @@ type CreateLoraParams struct { // CreateLora command is used to provision a new LoRa arduino device // and to add it to Arduino IoT Cloud. -func CreateLora(params *CreateLoraParams) (*DeviceLoraInfo, error) { +func CreateLora(params *CreateLoraParams, cred *config.Credentials) (*DeviceLoraInfo, error) { comm, err := cli.NewCommander() if err != nil { return nil, err @@ -107,11 +107,7 @@ func CreateLora(params *CreateLoraParams) (*DeviceLoraInfo, error) { return nil, err } - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/device/delete.go b/command/device/delete.go index e48953d4..6e84372b 100644 --- a/command/device/delete.go +++ b/command/device/delete.go @@ -36,18 +36,14 @@ type DeleteParams struct { // Delete command is used to delete a device // from Arduino IoT Cloud. -func Delete(params *DeleteParams) error { +func Delete(params *DeleteParams, cred *config.Credentials) error { if params.ID == nil && params.Tags == nil { return errors.New("provide either ID or Tags") } else if params.ID != nil && params.Tags != nil { return errors.New("cannot use both ID and Tags. only one of them should be not nil") } - conf, err := config.RetrieveCredentials() - if err != nil { - return err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return err } diff --git a/command/device/list.go b/command/device/list.go index cfb396f7..85d82dbd 100644 --- a/command/device/list.go +++ b/command/device/list.go @@ -32,12 +32,8 @@ type ListParams struct { // List command is used to list // the devices of Arduino IoT Cloud. -func List(params *ListParams) ([]DeviceInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func List(params *ListParams, cred *config.Credentials) ([]DeviceInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/device/listfrequency.go b/command/device/listfrequency.go index 234f211a..88ed3a9f 100644 --- a/command/device/listfrequency.go +++ b/command/device/listfrequency.go @@ -33,12 +33,8 @@ type FrequencyPlanInfo struct { // ListFrequencyPlans command is used to list // the supported LoRa frequency plans. -func ListFrequencyPlans() ([]FrequencyPlanInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func ListFrequencyPlans(cred *config.Credentials) ([]FrequencyPlanInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/ota/massupload.go b/command/ota/massupload.go index e4ab512c..3889ffc3 100644 --- a/command/ota/massupload.go +++ b/command/ota/massupload.go @@ -51,7 +51,7 @@ type Result struct { // MassUpload command is used to mass upload a firmware OTA, // on devices of Arduino IoT Cloud. -func MassUpload(params *MassUploadParams) ([]Result, error) { +func MassUpload(params *MassUploadParams, cred *config.Credentials) ([]Result, error) { if params.DeviceIDs == nil && params.Tags == nil { return nil, errors.New("provide either DeviceIDs or Tags") } else if params.DeviceIDs != nil && params.Tags != nil { @@ -71,11 +71,7 @@ func MassUpload(params *MassUploadParams) ([]Result, error) { return nil, fmt.Errorf("%s: %w", "cannot generate .ota file", err) } - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/ota/upload.go b/command/ota/upload.go index 13294d91..71cd6ae2 100644 --- a/command/ota/upload.go +++ b/command/ota/upload.go @@ -44,12 +44,8 @@ type UploadParams struct { // Upload command is used to upload a firmware OTA, // on a device of Arduino IoT Cloud. -func Upload(params *UploadParams) error { - conf, err := config.RetrieveCredentials() - if err != nil { - return err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Upload(params *UploadParams, cred *config.Credentials) error { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return err } diff --git a/command/tag/create.go b/command/tag/create.go index 61b86021..2317e33e 100644 --- a/command/tag/create.go +++ b/command/tag/create.go @@ -34,12 +34,8 @@ type CreateTagsParams struct { // CreateTags allows to create or overwrite tags // on a resource of Arduino IoT Cloud. -func CreateTags(params *CreateTagsParams) error { - conf, err := config.RetrieveCredentials() - if err != nil { - return err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func CreateTags(params *CreateTagsParams, cred *config.Credentials) error { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return err } diff --git a/command/tag/delete.go b/command/tag/delete.go index 62e19ba6..b0a9d02d 100644 --- a/command/tag/delete.go +++ b/command/tag/delete.go @@ -34,12 +34,8 @@ type DeleteTagsParams struct { // DeleteTags command is used to delete tags of a device // from Arduino IoT Cloud. -func DeleteTags(params *DeleteTagsParams) error { - conf, err := config.RetrieveCredentials() - if err != nil { - return err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func DeleteTags(params *DeleteTagsParams, cred *config.Credentials) error { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return err } diff --git a/command/thing/bind.go b/command/thing/bind.go index f854ef19..5dfe6336 100644 --- a/command/thing/bind.go +++ b/command/thing/bind.go @@ -32,12 +32,8 @@ type BindParams struct { // Bind command is used to bind a thing to a device // on Arduino IoT Cloud. -func Bind(params *BindParams) error { - conf, err := config.RetrieveCredentials() - if err != nil { - return err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Bind(params *BindParams, cred *config.Credentials) error { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return err } diff --git a/command/thing/clone.go b/command/thing/clone.go index cfb27d04..c22cc564 100644 --- a/command/thing/clone.go +++ b/command/thing/clone.go @@ -32,12 +32,8 @@ type CloneParams struct { } // Clone allows to create a new thing from an already existing one. -func Clone(params *CloneParams) (*ThingInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Clone(params *CloneParams, cred *config.Credentials) (*ThingInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/thing/create.go b/command/thing/create.go index fe679e98..9ffd2eb3 100644 --- a/command/thing/create.go +++ b/command/thing/create.go @@ -33,12 +33,8 @@ type CreateParams struct { } // Create allows to create a new thing. -func Create(params *CreateParams) (*ThingInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Create(params *CreateParams, cred *config.Credentials) (*ThingInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/thing/delete.go b/command/thing/delete.go index 68d24805..80e84feb 100644 --- a/command/thing/delete.go +++ b/command/thing/delete.go @@ -36,18 +36,14 @@ type DeleteParams struct { // Delete command is used to delete a thing // from Arduino IoT Cloud. -func Delete(params *DeleteParams) error { +func Delete(params *DeleteParams, cred *config.Credentials) error { if params.ID == nil && params.Tags == nil { return errors.New("provide either ID or Tags") } else if params.ID != nil && params.Tags != nil { return errors.New("cannot use both ID and Tags. only one of them should be not nil") } - conf, err := config.RetrieveCredentials() - if err != nil { - return err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return err } diff --git a/command/thing/extract.go b/command/thing/extract.go index 7f1ee4e1..a851f0eb 100644 --- a/command/thing/extract.go +++ b/command/thing/extract.go @@ -33,12 +33,8 @@ type ExtractParams struct { // Extract command is used to extract a thing template // from a thing on Arduino IoT Cloud. -func Extract(params *ExtractParams) (map[string]interface{}, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func Extract(params *ExtractParams, cred *config.Credentials) (map[string]interface{}, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err } diff --git a/command/thing/list.go b/command/thing/list.go index 548116c9..2ecce66a 100644 --- a/command/thing/list.go +++ b/command/thing/list.go @@ -35,12 +35,8 @@ type ListParams struct { // List command is used to list // the things of Arduino IoT Cloud. -func List(params *ListParams) ([]ThingInfo, error) { - conf, err := config.RetrieveCredentials() - if err != nil { - return nil, err - } - iotClient, err := iot.NewClient(conf.Client, conf.Secret) +func List(params *ListParams, cred *config.Credentials) ([]ThingInfo, error) { + iotClient, err := iot.NewClient(cred.Client, cred.Secret) if err != nil { return nil, err }