number formatting and better termopts formatting

This commit is contained in:
sawka
2022-09-21 12:39:55 -07:00
parent 5a6bebc51f
commit 8f608d9d9e
2 changed files with 78 additions and 3 deletions
+15 -3
View File
@@ -3,7 +3,6 @@ package cmdrunner
import (
"bytes"
"context"
"encoding/json"
"fmt"
"os"
"path"
@@ -1310,8 +1309,7 @@ func LineShowCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sst
if cmd.RemoteState.Cwd != "" {
buf.WriteString(fmt.Sprintf(" %-15s %s\n", "cwd", cmd.RemoteState.Cwd))
}
termOptsOut, _ := json.Marshal(cmd.TermOpts)
buf.WriteString(fmt.Sprintf(" %-15s %s\n", "termopts", string(termOptsOut)))
buf.WriteString(fmt.Sprintf(" %-15s %s\n", "termopts", formatTermOpts(cmd.TermOpts)))
}
update := sstore.ModelUpdate{
Info: &sstore.InfoMsgType{
@@ -1321,3 +1319,17 @@ func LineShowCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sst
}
return update, nil
}
func formatTermOpts(termOpts sstore.TermOpts) string {
if termOpts.Cols == 0 {
return "???"
}
rtnStr := fmt.Sprintf("%dx%d", termOpts.Rows, termOpts.Cols)
if termOpts.FlexRows {
rtnStr += " flexrows"
}
if termOpts.MaxPtySize > 0 {
rtnStr += " maxbuf=" + scbase.NumFormatB2(termOpts.MaxPtySize)
}
return rtnStr
}
+63
View File
@@ -153,3 +153,66 @@ func GenSCUUID() string {
return rtn
}
}
func NumFormatDec(num int64) string {
var signStr string
absNum := num
if absNum < 0 {
absNum = -absNum
signStr = "-"
}
if absNum < 1000 {
// raw num
return signStr + strconv.FormatInt(absNum, 10)
}
if absNum < 1000000 {
// k num
kVal := float64(absNum) / 1000
return signStr + strconv.FormatFloat(kVal, 'f', 2, 64) + "k"
}
if absNum < 1000000000 {
// M num
mVal := float64(absNum) / 1000000
return signStr + strconv.FormatFloat(mVal, 'f', 2, 64) + "m"
} else {
// G num
gVal := float64(absNum) / 1000000000
return signStr + strconv.FormatFloat(gVal, 'f', 2, 64) + "g"
}
}
func NumFormatB2(num int64) string {
var signStr string
absNum := num
if absNum < 0 {
absNum = -absNum
signStr = "-"
}
if absNum < 1024 {
// raw num
return signStr + strconv.FormatInt(absNum, 10)
}
if absNum < 1000000 {
// k num
if absNum%1024 == 0 {
return signStr + strconv.FormatInt(absNum/1024, 10) + "K"
}
kVal := float64(absNum) / 1024
return signStr + strconv.FormatFloat(kVal, 'f', 2, 64) + "K"
}
if absNum < 1000000000 {
// M num
if absNum%(1024*1024) == 0 {
return signStr + strconv.FormatInt(absNum/(1024*1024), 10) + "M"
}
mVal := float64(absNum) / (1024 * 1024)
return signStr + strconv.FormatFloat(mVal, 'f', 2, 64) + "M"
} else {
// G num
if absNum%(1024*1024*1024) == 0 {
return signStr + strconv.FormatInt(absNum/(1024*1024*1024), 10) + "G"
}
gVal := float64(absNum) / (1024 * 1024 * 1024)
return signStr + strconv.FormatFloat(gVal, 'f', 2, 64) + "G"
}
}