// Copyright 2025 WIT.COM Inc Licensed GPL 3.0 package cobol import ( "fmt" "strings" ) // TODO: make this more generic // print the header // args := []string{"namespace", "cur br", "age", "master", "devel", "last tag", "", "", "", ""} // sizes := []int{40, 12, 6, 12, 16, 16, 16, 12, 12, 8} // log.Info(standardTableSize10(sizes, args)) // returns the line and the Sprintf fmt string func StandardTableRow(sizes []int, args []string) (string, string) { var fmts []string var parts []string for i, si := range sizes { var cell string var sfmt string if si < 0 { sfmt = "%-s" } else if si == 0 { sfmt = "%-8.8s" } else { sfmt = "%-" + fmt.Sprintf("%d", si) + "." + fmt.Sprintf("%d", si) + "s " } fmts = append(fmts, sfmt) if len(args) > i { val := args[i] cell = fmt.Sprintf(sfmt, val) parts = append(parts, cell) } else { break } } // todo: change pad based on total size(?) line := strings.Join(parts, " ") var small int if len(line) > WIDTH { small = WIDTH } else { small = len(line) - 3 } return line[0:small], strings.Join(fmts, " ") } func StandardTableSize5(sizes []int, args []string) string { WIDTH, _ := getTerminalWidth() var s string for i, si := range sizes { if si == 0 { s += "%-s " } else { s += "%-" + fmt.Sprintf("%d", si) + "s " if len(args[i]) > sizes[i] { args[i] = args[i][:sizes[i]] } } } // there must be a better syntax for this arg1 := args[0] arg2 := args[1] arg3 := args[2] arg4 := args[3] arg5 := args[4] all := fmt.Sprintf(s, arg1, arg2, arg3, arg4, arg5) return all[0:WIDTH] } func StandardTableSize10(sizes []int, args []string) string { WIDTH, _ := getTerminalWidth() // log.Info("WIDTH IS", WIDTH) var s string for i, si := range sizes { if si == 0 { s += "%-s " } else { s += "%-" + fmt.Sprintf("%d", si) + "s " if len(args[i]) > sizes[i] { args[i] = args[i][:sizes[i]] } } } // there must be a better syntax for this arg1 := args[0] arg2 := args[1] arg3 := args[2] arg4 := args[3] arg5 := args[4] arg6 := args[5] arg7 := args[6] arg8 := args[7] arg9 := args[8] arg10 := args[9] all := fmt.Sprintf(s, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) var small int if len(all) > WIDTH { small = WIDTH } else { small = len(all) - 3 } return all[0:small] }