Add support for JSON output
This commit is contained in:
parent
92a709d196
commit
3d893015a3
12
main.go
12
main.go
|
@ -29,13 +29,13 @@ func parseArguments() {
|
|||
mailqCommandPtr := flag.String("mailqCommand", "mailq", "Command to use for getting mailq output")
|
||||
mailqCommandArgsPtr := flag.String("mailqCommandArgs", "", "Optional arguments to pass to mailqCommand")
|
||||
interactivePtr := flag.Bool("interactive", false, "Set to true for shell mode")
|
||||
machineFormatPtr := flag.Bool("machineFormat", false, "Set to true to get output suitable for cut/awk/...")
|
||||
outputFormatPtr := flag.String("outputFormat", "human", "Available output formats: \"human\", \"machine\", \"json\"")
|
||||
usePagerPtr := flag.Bool("usePager", true, "Use pager to display output?")
|
||||
flag.Parse()
|
||||
settings["mailqCommand"] = *mailqCommandPtr
|
||||
settings["mailqCommandArgs"] = *mailqCommandArgsPtr
|
||||
settings["interactive"] = strconv.FormatBool(*interactivePtr)
|
||||
settings["machineFormat"] = strconv.FormatBool(*machineFormatPtr)
|
||||
settings["outputFormat"] = *outputFormatPtr
|
||||
settings["usePager"] = strconv.FormatBool(*usePagerPtr)
|
||||
}
|
||||
|
||||
|
@ -63,10 +63,12 @@ func showQueue() {
|
|||
}
|
||||
|
||||
func printQueue(queue parser.MailQ, writer io.Writer) {
|
||||
if settings["machineFormat"] == "true" {
|
||||
queue.PrintMachineReadable(writer)
|
||||
} else {
|
||||
if settings["outputFormat"] == "human" {
|
||||
queue.PrintHumanReadable(writer)
|
||||
} else if settings["outputFormat"] == "machine" {
|
||||
queue.PrintMachineReadable(writer)
|
||||
} else if settings["outputFormat"] == "json" {
|
||||
queue.PrintJSON(writer)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package parser
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
|
@ -76,6 +77,15 @@ func (queue MailQ) PrintHumanReadable(writer io.Writer) {
|
|||
}
|
||||
}
|
||||
|
||||
func (queue MailQ) PrintJSON(writer io.Writer) {
|
||||
bytes, err := json.Marshal(queue)
|
||||
if err != nil {
|
||||
fmt.Fprintf(writer, "Error encoding queue to JSON: %s\n", err.Error())
|
||||
} else {
|
||||
fmt.Fprintf(writer, "%s", bytes)
|
||||
}
|
||||
}
|
||||
|
||||
func ParseMailQ(dataSource io.Reader) (MailQ, error) {
|
||||
const dateFormat = "2006 Mon Jan _2 15:04:05"
|
||||
var messageIdStart = regexp.MustCompile("^[0-9A-Za-z]+[*!]? ")
|
||||
|
|
Loading…
Reference in New Issue