diff --git a/README.md b/README.md index ed5e6a4b..357172eb 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ This tool generates function prototypes and gathers library paths, providing `gc * `-core-api-version`: Optional, defaults to "10600". The version of the Arduino IDE which is using this tool. -* `-logger`: Optional, can be "human" or "machine". Defaults to "human". If "machine", messages emitted will be in a format which the Arduino IDE understands and that it uses for I18N. +* `-logger`: Optional, can be "human", "humantags" or "machine". Defaults to "human". If "humantags" the messages are qualified with a prefix that indicates their level (info, debug, error). If "machine", messages emitted will be in a format which the Arduino IDE understands and that it uses for I18N. * `-version`: if specified, prints version and exits. diff --git a/src/arduino.cc/arduino-builder/main.go b/src/arduino.cc/arduino-builder/main.go index 94b3b137..8317c097 100644 --- a/src/arduino.cc/arduino-builder/main.go +++ b/src/arduino.cc/arduino-builder/main.go @@ -74,6 +74,7 @@ const FLAG_WARNINGS_MORE = "more" const FLAG_WARNINGS_ALL = "all" const FLAG_LOGGER = "logger" const FLAG_LOGGER_HUMAN = "human" +const FLAG_LOGGER_HUMANTAGS = "humantags" const FLAG_LOGGER_MACHINE = "machine" const FLAG_VERSION = "version" const FLAG_VID_PID = "vid-pid" @@ -152,7 +153,7 @@ func init() { quietFlag = flag.Bool(FLAG_QUIET, false, "if 'true' doesn't print any warnings or progress or whatever") debugLevelFlag = flag.Int(FLAG_DEBUG_LEVEL, builder.DEFAULT_DEBUG_LEVEL, "Turns on debugging messages. The higher, the chattier") warningsLevelFlag = flag.String(FLAG_WARNINGS, "", "Sets warnings level. Available values are '"+FLAG_WARNINGS_NONE+"', '"+FLAG_WARNINGS_DEFAULT+"', '"+FLAG_WARNINGS_MORE+"' and '"+FLAG_WARNINGS_ALL+"'") - loggerFlag = flag.String(FLAG_LOGGER, FLAG_LOGGER_HUMAN, "Sets type of logger. Available values are '"+FLAG_LOGGER_HUMAN+"', '"+FLAG_LOGGER_MACHINE+"'") + loggerFlag = flag.String(FLAG_LOGGER, FLAG_LOGGER_HUMAN, "Sets type of logger. Available values are '"+FLAG_LOGGER_HUMAN+"', '"+FLAG_LOGGER_HUMANTAGS+"', '"+FLAG_LOGGER_MACHINE+"'") versionFlag = flag.Bool(FLAG_VERSION, false, "prints version and exits") vidPidFlag = flag.String(FLAG_VID_PID, "", "specify to use vid/pid specific build properties, as defined in boards.txt") } @@ -299,6 +300,8 @@ func main() { ctx.SetLogger(i18n.NoopLogger{}) } else if *loggerFlag == FLAG_LOGGER_MACHINE { ctx.SetLogger(i18n.MachineLogger{}) + } else if *loggerFlag == FLAG_LOGGER_HUMANTAGS { + ctx.SetLogger(i18n.HumanTagsLogger{}) } else { ctx.SetLogger(i18n.HumanLogger{}) } diff --git a/src/arduino.cc/builder/i18n/i18n.go b/src/arduino.cc/builder/i18n/i18n.go index fbc53a1c..ce85d22c 100644 --- a/src/arduino.cc/builder/i18n/i18n.go +++ b/src/arduino.cc/builder/i18n/i18n.go @@ -58,6 +58,21 @@ func (s NoopLogger) Name() string { return "noop" } +type HumanTagsLogger struct{} + +func (s HumanTagsLogger) Fprintln(w io.Writer, level string, format string, a ...interface{}) { + format = "[" + level + "] " + format + fmt.Fprintln(w, Format(format, a...)) +} + +func (s HumanTagsLogger) Println(level string, format string, a ...interface{}) { + s.Fprintln(os.Stdout, level, format, a...) +} + +func (s HumanTagsLogger) Name() string { + return "humantags" +} + type HumanLogger struct{} func (s HumanLogger) Fprintln(w io.Writer, level string, format string, a ...interface{}) {