diff --git a/cli/certificates/flash.go b/cli/certificates/flash.go index 8fee3e7..1c1c0b5 100644 --- a/cli/certificates/flash.go +++ b/cli/certificates/flash.go @@ -153,7 +153,7 @@ func flashCertificatesWithPlugin(uploader *plugin.FwUploader, certificateURLs, c return nil, err } - _, err = uploader.FlashCertificates(commonFlags.Address, commonFlags.Fqbn, certsBundle, stdout, stderr) + _, err = uploader.FlashCertificates(commonFlags.Address, commonFlags.Fqbn, globals.LogLevel, globals.Verbose, certsBundle, stdout, stderr) return &flasher.FlashResult{ Flasher: &flasher.ExecOutput{ Stdout: stdoutBuffer.String(), diff --git a/cli/cli.go b/cli/cli.go index d7a76d4..66b1419 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -25,10 +25,10 @@ import ( "github.com/arduino/arduino-fwuploader/cli/certificates" "github.com/arduino/arduino-fwuploader/cli/common" + "github.com/arduino/arduino-fwuploader/cli/feedback" "github.com/arduino/arduino-fwuploader/cli/firmware" + "github.com/arduino/arduino-fwuploader/cli/globals" "github.com/arduino/arduino-fwuploader/cli/version" - - "github.com/arduino/arduino-fwuploader/cli/feedback" v "github.com/arduino/arduino-fwuploader/version" "github.com/mattn/go-colorable" "github.com/rifflock/lfshook" @@ -38,10 +38,8 @@ import ( var ( outputFormat string - verbose bool logFile string logFormat string - logLevel string additionalFirmwareURLs []string additionalPackageURLs []string ) @@ -64,8 +62,8 @@ func NewCommand() *cobra.Command { rootCmd.PersistentFlags().StringVar(&outputFormat, "format", "text", "The output format, can be {text|json}.") rootCmd.PersistentFlags().StringVar(&logFile, "log-file", "", "Path to the file where logs will be written") rootCmd.PersistentFlags().StringVar(&logFormat, "log-format", "", "The output format for the logs, can be {text|json}.") - rootCmd.PersistentFlags().StringVar(&logLevel, "log-level", "info", "Messages with this level and above will be logged. Valid levels are: trace, debug, info, warn, error, fatal, panic") - rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Print the logs on the standard output.") + rootCmd.PersistentFlags().StringVar(&globals.LogLevel, "log-level", "info", "Messages with this level and above will be logged. Valid levels are: trace, debug, info, warn, error, fatal, panic") + rootCmd.PersistentFlags().BoolVarP(&globals.Verbose, "verbose", "v", false, "Print the logs on the standard output.") rootCmd.PersistentFlags().StringArrayVarP(&additionalFirmwareURLs, "additional-fw-index", "F", nil, "Additional firmwares index URLs (useful for testing purposes)") rootCmd.PersistentFlags().StringArrayVarP(&additionalPackageURLs, "additional-packages-index", "P", nil, "Additional packages index URLs (useful for testing purposes)") return rootCmd @@ -97,7 +95,7 @@ func preRun(cmd *cobra.Command, args []string) { feedback.SetFormat(format) // Prepare logging - if verbose { + if globals.Verbose { // if we print on stdout, do it in full colors logrus.SetOutput(colorable.NewColorableStdout()) logrus.SetFormatter(&logrus.TextFormatter{ @@ -128,8 +126,8 @@ func preRun(cmd *cobra.Command, args []string) { } // Configure logging filter - if lvl, found := toLogLevel(logLevel); !found { - feedback.Fatal(fmt.Sprintf("Invalid option for --log-level: %s", logLevel), feedback.ErrBadArgument) + if lvl, found := toLogLevel(globals.LogLevel); !found { + feedback.Fatal(fmt.Sprintf("Invalid option for --log-level: %s", globals.LogLevel), feedback.ErrBadArgument) } else { logrus.SetLevel(lvl) } diff --git a/cli/firmware/flash.go b/cli/firmware/flash.go index 5c3eca9..b4bd9eb 100644 --- a/cli/firmware/flash.go +++ b/cli/firmware/flash.go @@ -171,7 +171,7 @@ func updateFirmwareWithPlugin(uploader *plugin.FwUploader, fwPath *paths.Path) ( stdout = os.Stdout stderr = os.Stderr } - res, err := uploader.FlashFirmware(commonFlags.Address, commonFlags.Fqbn, fwPath, stdout, stderr) + res, err := uploader.FlashFirmware(commonFlags.Address, commonFlags.Fqbn, globals.LogLevel, globals.Verbose, fwPath, stdout, stderr) if err != nil { return nil, fmt.Errorf("couldn't update firmware: %s", err) } diff --git a/cli/firmware/getversion.go b/cli/firmware/getversion.go index 592173b..16b1ab4 100644 --- a/cli/firmware/getversion.go +++ b/cli/firmware/getversion.go @@ -89,7 +89,7 @@ func getVersionWithPlugin(uploader *plugin.FwUploader) *flasher.FlashResult { stdout = os.Stdout stderr = os.Stderr } - res, err := uploader.GetFirmwareVersion(commonFlags.Address, commonFlags.Fqbn, stdout, stderr) + res, err := uploader.GetFirmwareVersion(commonFlags.Address, commonFlags.Fqbn, globals.LogLevel, globals.Verbose, stdout, stderr) if err != nil { feedback.Fatal(fmt.Sprintf("Couldn't get firmware version: %s", err), feedback.ErrGeneric) } diff --git a/cli/globals/globals.go b/cli/globals/globals.go index 9827fb9..424fb7c 100644 --- a/cli/globals/globals.go +++ b/cli/globals/globals.go @@ -29,6 +29,8 @@ var ( ModuleFirmwareIndexGZURL = "https://downloads.arduino.cc/arduino-fwuploader/boards/module_firmware_index.json.gz" PluginFirmwareIndexGZURL = "https://downloads.arduino.cc/arduino-fwuploader/boards/plugin_firmware_index.json.gz" FwUploaderPath = paths.TempDir().Join("fwuploader") + Verbose bool + LogLevel string ) //go:embed keys/* diff --git a/plugin/plugin.go b/plugin/plugin.go index e0a0bba..8681dfa 100644 --- a/plugin/plugin.go +++ b/plugin/plugin.go @@ -84,7 +84,7 @@ func (uploader *FwUploader) QueryAPIVersion() (int, error) { } // GetFirmwareVersion runs the plugin to obtain the version of the installed firmware -func (uploader *FwUploader) GetFirmwareVersion(portAddress, fqbn string, stdout, stderr io.Writer) (*GetFirmwareVersionResult, error) { +func (uploader *FwUploader) GetFirmwareVersion(portAddress, fqbn, LogLevel string, verbose bool, stdout, stderr io.Writer) (*GetFirmwareVersionResult, error) { args := []string{"firmware", "get-version"} if portAddress != "" { args = append(args, "-p", portAddress) @@ -92,6 +92,12 @@ func (uploader *FwUploader) GetFirmwareVersion(portAddress, fqbn string, stdout, if fqbn != "" { args = append(args, "-b", fqbn) } + if verbose { + args = append(args, "-v") + } + if LogLevel != "" { + args = append(args, "--log-level", LogLevel) + } execStdout, execStderr, execErr := uploader.exec(stdout, stderr, args...) res := &GetFirmwareVersionResult{ @@ -129,7 +135,7 @@ type GetFirmwareVersionResult struct { } // FlashFirmware runs the plugin to flash the selected firmware -func (uploader *FwUploader) FlashFirmware(portAddress, fqbn string, firmwarePath *paths.Path, stdout, stderr io.Writer) (*FlashFirmwareResult, error) { +func (uploader *FwUploader) FlashFirmware(portAddress, fqbn, LogLevel string, verbose bool, firmwarePath *paths.Path, stdout, stderr io.Writer) (*FlashFirmwareResult, error) { args := []string{"firmware", "flash", firmwarePath.String()} if portAddress != "" { args = append(args, "-p", portAddress) @@ -137,6 +143,12 @@ func (uploader *FwUploader) FlashFirmware(portAddress, fqbn string, firmwarePath if fqbn != "" { args = append(args, "-b", fqbn) } + if verbose { + args = append(args, "-v") + } + if LogLevel != "" { + args = append(args, "--log-level", LogLevel) + } execStdout, execStderr, execErr := uploader.exec(stdout, stderr, args...) res := &FlashFirmwareResult{ @@ -192,7 +204,7 @@ func (uploader *FwUploader) exec(stdout, stderr io.Writer, args ...string) (*byt } // FlashCertificates writes the given certificates bundle in PEM format. -func (uploader *FwUploader) FlashCertificates(portAddress, fqbn string, certsPath *paths.Path, stdout, stderr io.Writer) (*FlashCertificatesResult, error) { +func (uploader *FwUploader) FlashCertificates(portAddress, fqbn, LogLevel string, verbose bool, certsPath *paths.Path, stdout, stderr io.Writer) (*FlashCertificatesResult, error) { args := []string{"cert", "flash", certsPath.String()} if portAddress != "" { args = append(args, "-p", portAddress) @@ -200,6 +212,12 @@ func (uploader *FwUploader) FlashCertificates(portAddress, fqbn string, certsPat if fqbn != "" { args = append(args, "-b", fqbn) } + if verbose { + args = append(args, "-v") + } + if LogLevel != "" { + args = append(args, "--log-level", LogLevel) + } execStdout, execStderr, execErr := uploader.exec(stdout, stderr, args...) res := &FlashCertificatesResult{