summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Milde <daniel@milde.cz>2022-08-03 00:08:10 +0200
committerDaniel Milde <daniel@milde.cz>2022-08-03 00:08:10 +0200
commit5d7cd6ae8d255a01fbb1afb032ad1c1fe338c3b4 (patch)
tree8eb5893ee30053836ea32e03fe23d2f511e10f2c
parent386ada6004afb9f54825285678ce5397ccc2583d (diff)
feat: show sizes as raw numbers without prefixesv5.15.0
closes #147
-rw-r--r--cmd/gdu/app/app.go6
-rw-r--r--cmd/gdu/main.go1
-rw-r--r--gdu.121
-rw-r--r--gdu.1.md2
-rw-r--r--stdout/stdout.go6
-rw-r--r--stdout/stdout_linux_test.go2
-rw-r--r--stdout/stdout_test.go44
7 files changed, 64 insertions, 18 deletions
diff --git a/cmd/gdu/app/app.go b/cmd/gdu/app/app.go
index 8b42fad..2aea737 100644
--- a/cmd/gdu/app/app.go
+++ b/cmd/gdu/app/app.go
@@ -59,6 +59,7 @@ type Flags struct {
ConstGC bool
Summarize bool
UseSIPrefix bool
+ NoPrefix bool
}
// App defines the main application
@@ -106,6 +107,10 @@ func (a *App) Run() (err error) {
log.Printf("Runtime flags: %+v", *a.Flags)
+ if a.Flags.NoPrefix && a.Flags.UseSIPrefix {
+ return fmt.Errorf("--no-prefix and --si cannot be used at once")
+ }
+
path := a.getPath()
path, _ = filepath.Abs(path)
@@ -199,6 +204,7 @@ func (a *App) createUI() (UI, error) {
a.Flags.Summarize,
a.Flags.ConstGC,
a.Flags.UseSIPrefix,
+ a.Flags.NoPrefix,
)
} else {
ui = tui.CreateUI(
diff --git a/cmd/gdu/main.go b/cmd/gdu/main.go
index 7f84a5a..c590138 100644
--- a/cmd/gdu/main.go
+++ b/cmd/gdu/main.go
@@ -53,6 +53,7 @@ func init() {
flags.BoolVarP(&af.NoProgress, "no-progress", "p", false, "Do not show progress in non-interactive mode")
flags.BoolVarP(&af.Summarize, "summarize", "s", false, "Show only a total in non-interactive mode")
flags.BoolVar(&af.UseSIPrefix, "si", false, "Show sizes with decimal SI prefixes (kB, MB, GB) instead of binary prefixes (KiB, MiB, GiB)")
+ flags.BoolVar(&af.NoPrefix, "no-prefix", false, "Show sizes as raw numbers without any prefixes (SI or binary) in non-interactive mode")
}
func runE(command *cobra.Command, args []string) error {
diff --git a/gdu.1 b/gdu.1
index 4bf18e6..27f200d 100644
--- a/gdu.1
+++ b/gdu.1
@@ -1,6 +1,20 @@
-.\" Automatically generated by Pandoc 2.14.2
+.\" Automatically generated by Pandoc 2.18
.\"
-.TH "gdu" "1" "2022-01-18" "" ""
+.\" Define V font for inline verbatim, using C font in formats
+.\" that render this, and otherwise B font.
+.ie "\f[CB]x\f[]"x" \{\
+. ftr V B
+. ftr VI BI
+. ftr VB B
+. ftr VBI BI
+.\}
+.el \{\
+. ftr V CR
+. ftr VI CI
+. ftr VB CB
+. ftr VBI CBI
+.\}
+.TH "gdu" "1" "2022-08-03" "" ""
.hy
.SH NAME
.PP
@@ -56,6 +70,9 @@ non-interactive mode
\f[B]--si\f[R][=false] Show sizes with decimal SI prefixes (kB, MB, GB)
instead of binary prefixes (KiB, MiB, GiB)
.PP
+\f[B]--no-prefix\f[R][=false] Show sizes as raw numbers without any
+prefixes (SI or binary) in non-interactive mode
+.PP
\f[B]-f\f[R], \f[B]-\[em]input-file\f[R] Import analysis from JSON file.
If the file is \[dq]-\[dq], read from standard input.
.PP
diff --git a/gdu.1.md b/gdu.1.md
index 041b011..0943203 100644
--- a/gdu.1.md
+++ b/gdu.1.md
@@ -55,6 +55,8 @@ non-interactive mode
**\--si**\[=false\] Show sizes with decimal SI prefixes (kB, MB, GB) instead of binary prefixes (KiB, MiB, GiB)
+**\--no-prefix**\[=false\] Show sizes as raw numbers without any prefixes (SI or binary) in non-interactive mode
+
**-f**, **\----input-file** Import analysis from JSON file. If the file is \"-\", read from standard input.
**-o**, **\----output-file** Export all info into file as JSON. If the file is \"-\", write to standard output.
diff --git a/stdout/stdout.go b/stdout/stdout.go
index 60e5d85..f20e311 100644
--- a/stdout/stdout.go
+++ b/stdout/stdout.go
@@ -25,6 +25,7 @@ type UI struct {
orange *color.Color
blue *color.Color
summarize bool
+ noPrefix bool
}
var progressRunes = []rune(`⠇⠏⠋⠙⠹⠸⠼⠴⠦⠧`)
@@ -39,6 +40,7 @@ func CreateStdoutUI(
summarize bool,
constGC bool,
useSIPrefix bool,
+ noPrefix bool,
) *UI {
ui := &UI{
UI: &common.UI{
@@ -52,6 +54,7 @@ func CreateStdoutUI(
},
output: output,
summarize: summarize,
+ noPrefix: noPrefix,
}
ui.red = color.New(color.FgRed).Add(color.Bold)
@@ -336,6 +339,9 @@ func (ui *UI) updateProgress() {
}
func (ui *UI) formatSize(size int64) string {
+ if ui.noPrefix {
+ return ui.orange.Sprintf("%d", size)
+ }
if ui.UseSIPrefix {
return ui.formatWithDecPrefix(size)
}
diff --git a/stdout/stdout_linux_test.go b/stdout/stdout_linux_test.go
index b062e6c..4a47dae 100644
--- a/stdout/stdout_linux_test.go
+++ b/stdout/stdout_linux_test.go
@@ -21,7 +21,7 @@ func TestShowDevicesWithErr(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
getter := device.LinuxDevicesInfoGetter{MountsPath: "/xyzxyz"}
- ui := CreateStdoutUI(output, false, true, false, false, false, false, false)
+ ui := CreateStdoutUI(output, false, true, false, false, false, false, false, false)
err := ui.ListDevices(getter)
assert.Contains(t, err.Error(), "no such file")
diff --git a/stdout/stdout_test.go b/stdout/stdout_test.go
index 425765b..2146367 100644
--- a/stdout/stdout_test.go
+++ b/stdout/stdout_test.go
@@ -25,7 +25,7 @@ func TestAnalyzePath(t *testing.T) {
buff := make([]byte, 10)
output := bytes.NewBuffer(buff)
- ui := CreateStdoutUI(output, false, false, false, false, false, true, false)
+ ui := CreateStdoutUI(output, false, false, false, false, false, true, false, false)
ui.SetIgnoreDirPaths([]string{"/xxx"})
err := ui.AnalyzePath("test_dir", nil)
assert.Nil(t, err)
@@ -42,7 +42,7 @@ func TestShowSummary(t *testing.T) {
buff := make([]byte, 10)
output := bytes.NewBuffer(buff)
- ui := CreateStdoutUI(output, true, false, true, false, true, false, false)
+ ui := CreateStdoutUI(output, true, false, true, false, true, false, false, false)
ui.SetIgnoreDirPaths([]string{"/xxx"})
err := ui.AnalyzePath("test_dir", nil)
assert.Nil(t, err)
@@ -59,7 +59,7 @@ func TestShowSummaryBw(t *testing.T) {
buff := make([]byte, 10)
output := bytes.NewBuffer(buff)
- ui := CreateStdoutUI(output, false, false, false, false, true, false, false)
+ ui := CreateStdoutUI(output, false, false, false, false, true, false, false, false)
ui.SetIgnoreDirPaths([]string{"/xxx"})
err := ui.AnalyzePath("test_dir", nil)
assert.Nil(t, err)
@@ -76,7 +76,7 @@ func TestAnalyzeSubdir(t *testing.T) {
buff := make([]byte, 10)
output := bytes.NewBuffer(buff)
- ui := CreateStdoutUI(output, false, false, false, false, false, false, false)
+ ui := CreateStdoutUI(output, false, false, false, false, false, false, false, false)
ui.SetIgnoreDirPaths([]string{"/xxx"})
err := ui.AnalyzePath("test_dir/nested", nil)
assert.Nil(t, err)
@@ -93,7 +93,7 @@ func TestAnalyzePathWithColors(t *testing.T) {
buff := make([]byte, 10)
output := bytes.NewBuffer(buff)
- ui := CreateStdoutUI(output, true, false, true, false, false, false, false)
+ ui := CreateStdoutUI(output, true, false, true, false, false, false, false, false)
ui.SetIgnoreDirPaths([]string{"/xxx"})
err := ui.AnalyzePath("test_dir/nested", nil)
@@ -104,7 +104,7 @@ func TestAnalyzePathWithColors(t *testing.T) {
func TestItemRows(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, false, true, false, false, false, false, false)
+ ui := CreateStdoutUI(output, false, true, false, false, false, false, false, false)
ui.Analyzer = &testanalyze.MockedAnalyzer{}
err := ui.AnalyzePath("test_dir", nil)
@@ -118,7 +118,7 @@ func TestAnalyzePathWithProgress(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, false, true, true, false, false, false, false)
+ ui := CreateStdoutUI(output, false, true, true, false, false, false, false, false)
ui.SetIgnoreDirPaths([]string{"/xxx"})
err := ui.AnalyzePath("test_dir", nil)
@@ -129,7 +129,7 @@ func TestAnalyzePathWithProgress(t *testing.T) {
func TestShowDevices(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, false, true, false, false, false, false, false)
+ ui := CreateStdoutUI(output, false, true, false, false, false, false, false, false)
err := ui.ListDevices(getDevicesInfoMock())
assert.Nil(t, err)
@@ -140,7 +140,7 @@ func TestShowDevices(t *testing.T) {
func TestShowDevicesWithColor(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, true, true, true, false, false, false, false)
+ ui := CreateStdoutUI(output, true, true, true, false, false, false, false, false)
err := ui.ListDevices(getDevicesInfoMock())
assert.Nil(t, err)
@@ -154,7 +154,7 @@ func TestReadAnalysisWithColor(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, true, true, true, false, false, false, false)
+ ui := CreateStdoutUI(output, true, true, true, false, false, false, false, false)
err = ui.ReadAnalysis(input)
assert.Nil(t, err)
@@ -167,7 +167,7 @@ func TestReadAnalysisBw(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, false, false, false, false, false, false, false)
+ ui := CreateStdoutUI(output, false, false, false, false, false, false, false, false)
err = ui.ReadAnalysis(input)
assert.Nil(t, err)
@@ -180,7 +180,7 @@ func TestReadAnalysisWithWrongFile(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, true, true, true, false, false, false, false)
+ ui := CreateStdoutUI(output, true, true, true, false, false, false, false, false)
err = ui.ReadAnalysis(input)
assert.NotNil(t, err)
@@ -192,7 +192,7 @@ func TestReadAnalysisWithSummarize(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, false, false, false, false, true, false, false)
+ ui := CreateStdoutUI(output, false, false, false, false, true, false, false, false)
err = ui.ReadAnalysis(input)
assert.Nil(t, err)
@@ -207,7 +207,7 @@ func TestMaxInt(t *testing.T) {
func TestFormatSize(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, true, true, true, false, false, false, false)
+ ui := CreateStdoutUI(output, true, true, true, false, false, false, false, false)
assert.Contains(t, ui.formatSize(1), "B")
assert.Contains(t, ui.formatSize(1<<10+1), "KiB")
@@ -221,7 +221,7 @@ func TestFormatSize(t *testing.T) {
func TestFormatSizeDec(t *testing.T) {
output := bytes.NewBuffer(make([]byte, 10))
- ui := CreateStdoutUI(output, true, true, true, false, false, false, true)
+ ui := CreateStdoutUI(output, true, true, true, false, false, false, true, false)
assert.Contains(t, ui.formatSize(1), "B")
assert.Contains(t, ui.formatSize(1<<10+1), "kB")
@@ -232,6 +232,20 @@ func TestFormatSizeDec(t *testing.T) {
assert.Contains(t, ui.formatSize(1<<60+1), "EB")
}
+func TestFormatSizeRaw(t *testing.T) {
+ output := bytes.NewBuffer(make([]byte, 10))
+
+ ui := CreateStdoutUI(output, true, true, true, false, false, false, true, true)
+
+ assert.Equal(t, ui.formatSize(1), "1")
+ assert.Equal(t, ui.formatSize(1<<10+1), "1025")
+ assert.Equal(t, ui.formatSize(1<<20+1), "1048577")
+ assert.Equal(t, ui.formatSize(1<<30+1), "1073741825")
+ assert.Equal(t, ui.formatSize(1<<40+1), "1099511627777")
+ assert.Equal(t, ui.formatSize(1<<50+1), "1125899906842625")
+ assert.Equal(t, ui.formatSize(1<<60+1), "1152921504606846977")
+}
+
// func printBuffer(buff *bytes.Buffer) {
// for i, x := range buff.String() {
// println(i, string(x))