mirror of
https://codeberg.org/scip/tablizer.git
synced 2025-12-17 20:41:03 +01:00
fixed -X output in combination with -c
This commit is contained in:
2
go.mod
2
go.mod
@@ -7,12 +7,12 @@ require (
|
|||||||
github.com/gookit/color v1.5.2
|
github.com/gookit/color v1.5.2
|
||||||
github.com/olekukonko/tablewriter v0.0.5
|
github.com/olekukonko/tablewriter v0.0.5
|
||||||
github.com/spf13/cobra v1.5.0
|
github.com/spf13/cobra v1.5.0
|
||||||
|
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.9 // indirect
|
github.com/mattn/go-runewidth v0.0.9 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
|
|
||||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44 // indirect
|
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
package lib
|
package lib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gookit/color"
|
||||||
|
//"github.com/xo/terminfo"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// command line flags
|
// command line flags
|
||||||
Debug bool
|
Debug bool
|
||||||
@@ -35,11 +40,30 @@ var (
|
|||||||
InvertMatch bool
|
InvertMatch bool
|
||||||
Pattern string
|
Pattern string
|
||||||
|
|
||||||
// FIXME: make configurable somehow, config file or ENV
|
/*
|
||||||
MatchFG string = "black" // see https://github.com/gookit/color
|
FIXME: make configurable somehow, config file or ENV
|
||||||
MatchBG string = "green"
|
see https://github.com/gookit/color will be set by
|
||||||
|
io.ProcessFiles() according to currently supported
|
||||||
|
color mode.
|
||||||
|
*/
|
||||||
|
MatchFG string
|
||||||
|
MatchBG string
|
||||||
NoColor bool
|
NoColor bool
|
||||||
|
|
||||||
|
// colors to be used per supported color mode
|
||||||
|
Colors = map[color.Level]map[string]string{
|
||||||
|
color.Level16: map[string]string{
|
||||||
|
"bg": "green", "fg": "black",
|
||||||
|
},
|
||||||
|
color.Level256: map[string]string{
|
||||||
|
"bg": "lightGreen", "fg": "black",
|
||||||
|
},
|
||||||
|
color.LevelRgb: map[string]string{
|
||||||
|
// FIXME: maybe use something nicer
|
||||||
|
"bg": "lightGreen", "fg": "black",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
// used for validation
|
// used for validation
|
||||||
validOutputmodes = "(orgtbl|markdown|extended|ascii)"
|
validOutputmodes = "(orgtbl|markdown|extended|ascii)"
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,10 @@ func PrepareColumns() error {
|
|||||||
func numberizeHeaders(data *Tabdata) {
|
func numberizeHeaders(data *Tabdata) {
|
||||||
// prepare headers: add numbers to headers
|
// prepare headers: add numbers to headers
|
||||||
numberedHeaders := []string{}
|
numberedHeaders := []string{}
|
||||||
|
maxwidth := 0 // start from scratch, so we only look at displayed column widths
|
||||||
|
|
||||||
for i, head := range data.headers {
|
for i, head := range data.headers {
|
||||||
|
headlen := 0
|
||||||
if len(Columns) > 0 {
|
if len(Columns) > 0 {
|
||||||
// -c specified
|
// -c specified
|
||||||
if !contains(UseColumns, i+1) {
|
if !contains(UseColumns, i+1) {
|
||||||
@@ -63,11 +66,21 @@ func numberizeHeaders(data *Tabdata) {
|
|||||||
}
|
}
|
||||||
if NoNumbering {
|
if NoNumbering {
|
||||||
numberedHeaders = append(numberedHeaders, head)
|
numberedHeaders = append(numberedHeaders, head)
|
||||||
|
headlen = len(head)
|
||||||
} else {
|
} else {
|
||||||
numberedHeaders = append(numberedHeaders, fmt.Sprintf("%s(%d)", head, i+1))
|
numhead := fmt.Sprintf("%s(%d)", head, i+1)
|
||||||
|
headlen = len(numhead)
|
||||||
|
numberedHeaders = append(numberedHeaders, numhead)
|
||||||
|
}
|
||||||
|
|
||||||
|
if headlen > maxwidth {
|
||||||
|
maxwidth = headlen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.headers = numberedHeaders
|
data.headers = numberedHeaders
|
||||||
|
if data.maxwidthHeader != maxwidth && maxwidth > 0 {
|
||||||
|
data.maxwidthHeader = maxwidth
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func reduceColumns(data *Tabdata) {
|
func reduceColumns(data *Tabdata) {
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ func ProcessFiles(args []string) error {
|
|||||||
|
|
||||||
if !isTerminal(os.Stdout) {
|
if !isTerminal(os.Stdout) {
|
||||||
color.Disable()
|
color.Disable()
|
||||||
|
} else {
|
||||||
|
level := color.TermColorLevel()
|
||||||
|
MatchFG = Colors[level]["fg"]
|
||||||
|
MatchBG = Colors[level]["bg"]
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -137,22 +137,14 @@ func printAsciiData(data *Tabdata) {
|
|||||||
*/
|
*/
|
||||||
func printExtendedData(data *Tabdata) {
|
func printExtendedData(data *Tabdata) {
|
||||||
// needed for data output
|
// needed for data output
|
||||||
format := fmt.Sprintf("%%%ds: %%s\n", data.maxwidthHeader) // FIXME: re-calculate if -c has been set
|
format := fmt.Sprintf("%%%ds: %%s\n", data.maxwidthHeader)
|
||||||
|
|
||||||
if len(data.entries) > 0 {
|
if len(data.entries) > 0 {
|
||||||
var idx int
|
|
||||||
for _, entry := range data.entries {
|
for _, entry := range data.entries {
|
||||||
idx = 0
|
|
||||||
for i, value := range entry {
|
for i, value := range entry {
|
||||||
if len(Columns) > 0 {
|
color.Printf(format, data.headers[i], value)
|
||||||
if !contains(UseColumns, i+1) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
color.Printf(format, data.headers[idx], value)
|
|
||||||
idx++
|
|
||||||
}
|
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user