added shell mode output

This commit is contained in:
2022-10-03 13:28:04 +02:00
parent 3fd2e6ac2f
commit 76f49a532f
6 changed files with 59 additions and 19 deletions

View File

@@ -28,7 +28,8 @@ var Separator string
var OutflagExtended bool
var OutflagMarkdown bool
var OutflagOrgtable bool
var OutflagShell bool
var OutputMode string
var Version = "v1.0.2"
var Version = "v1.0.3"
var validOutputmodes = "(orgtbl|markdown|extended|ascii)"

View File

@@ -57,6 +57,9 @@ func PrepareModeFlags() error {
OutputMode = "markdown"
case OutflagOrgtable:
OutputMode = "orgtbl"
case OutflagShell:
OutputMode = "shell"
NoNumbering = true
default:
OutputMode = "ascii"
}

View File

@@ -27,20 +27,22 @@ import (
func printData(data *Tabdata) {
// prepare headers: add numbers to headers
if !NoNumbering {
numberedHeaders := []string{}
for i, head := range data.headers {
if len(Columns) > 0 {
// -c specified
if !contains(UseColumns, i+1) {
// ignore this one
continue
}
numberedHeaders := []string{}
for i, head := range data.headers {
if len(Columns) > 0 {
// -c specified
if !contains(UseColumns, i+1) {
// ignore this one
continue
}
}
if NoNumbering {
numberedHeaders = append(numberedHeaders, head)
} else {
numberedHeaders = append(numberedHeaders, fmt.Sprintf("%s(%d)", head, i+1))
}
data.headers = numberedHeaders
}
data.headers = numberedHeaders
// prepare data
if len(Columns) > 0 {
@@ -69,6 +71,8 @@ func printData(data *Tabdata) {
printOrgmodeData(data)
case "markdown":
printMarkdownData(data)
case "shell":
printShellData(data)
default:
printAsciiData(data)
}
@@ -177,3 +181,26 @@ func printExtendedData(data *Tabdata) {
}
}
}
/*
Shell output, ready to be eval'd. Just like FreeBSD stat(1)
*/
func printShellData(data *Tabdata) {
if len(data.entries) > 0 {
var idx int
for _, entry := range data.entries {
idx = 0
for i, value := range entry {
if len(Columns) > 0 {
if !contains(UseColumns, i+1) {
continue
}
}
fmt.Printf("%s=\"%s\" ", data.headers[idx], value)
idx++
}
fmt.Println()
}
}
}