From 9bbddf56dfc490322c88b147baa92d8386ed5132 Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 15:29:54 +0200 Subject: refactor: string instead of bytearray --- internal/common/ignore_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/common/ignore_test.go b/internal/common/ignore_test.go index 8ac5c6d..f770fea 100644 --- a/internal/common/ignore_test.go +++ b/internal/common/ignore_test.go @@ -18,7 +18,7 @@ func TestCreateIgnorePattern(t *testing.T) { re, err := common.CreateIgnorePattern([]string{"[abc]+"}) assert.Nil(t, err) - assert.True(t, re.Match([]byte("aa"))) + assert.True(t, re.MatchString("aa")) } func TestCreateIgnorePatternWithErr(t *testing.T) { @@ -63,13 +63,13 @@ func TestIgnoreFromFile(t *testing.T) { } defer file.Close() - if _, err := file.Write([]byte("/aaa\n")); err != nil { + if _, err := file.WriteString("/aaa\n"); err != nil { panic(err) } - if _, err := file.Write([]byte("/aaabc\n")); err != nil { + if _, err := file.WriteString("/aaabc\n"); err != nil { panic(err) } - if _, err := file.Write([]byte("/[abd]+\n")); err != nil { + if _, err := file.WriteString("/[abd]+\n"); err != nil { panic(err) } -- cgit v1.2.3 From 688804fff1eda6172b159c76c8f4b09a92c97b12 Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 15:30:44 +0200 Subject: refactor: constants for sorting --- tui/sort.go | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/tui/sort.go b/tui/sort.go index 2e2af32..049b79a 100644 --- a/tui/sort.go +++ b/tui/sort.go @@ -7,67 +7,77 @@ import ( "github.com/dundee/gdu/v5/pkg/fs" ) +const ( + nameSortKey = "name" + sizeSortKey = "size" + itemCountSortKey = "itemCount" + mtimeSortKey = "mtime" + + ascOrder = "asc" + descOrder = "desc" +) + // SetDefaultSorting sets the default sorting func (ui *UI) SetDefaultSorting(by, order string) { if by != "" { ui.defaultSortBy = by } - if order == "asc" || order == "desc" { + if order == ascOrder || order == descOrder { ui.defaultSortOrder = order } } func (ui *UI) setSorting(newOrder string) { if newOrder == ui.sortBy { - if ui.sortOrder == "asc" { - ui.sortOrder = "desc" + if ui.sortOrder == ascOrder { + ui.sortOrder = descOrder } else { - ui.sortOrder = "asc" + ui.sortOrder = ascOrder } } else { ui.sortBy = newOrder - ui.sortOrder = "asc" + ui.sortOrder = ascOrder } if ui.currentDir != nil { ui.showDir() - } else if ui.devices != nil && (newOrder == "size" || newOrder == "name") { + } else if ui.devices != nil && (newOrder == sizeSortKey || newOrder == nameSortKey) { ui.showDevices() } } func (ui *UI) sortItems() { - if ui.sortBy == "size" { + if ui.sortBy == sizeSortKey { if ui.ShowApparentSize { - if ui.sortOrder == "desc" { + if ui.sortOrder == descOrder { sort.Sort(sort.Reverse(fs.ByApparentSize(ui.currentDir.GetFiles()))) } else { sort.Sort(fs.ByApparentSize(ui.currentDir.GetFiles())) } } else { - if ui.sortOrder == "desc" { + if ui.sortOrder == descOrder { sort.Sort(sort.Reverse(ui.currentDir.GetFiles())) } else { sort.Sort(ui.currentDir.GetFiles()) } } } - if ui.sortBy == "itemCount" { - if ui.sortOrder == "desc" { + if ui.sortBy == itemCountSortKey { + if ui.sortOrder == descOrder { sort.Sort(sort.Reverse(fs.ByItemCount(ui.currentDir.GetFiles()))) } else { sort.Sort(fs.ByItemCount(ui.currentDir.GetFiles())) } } - if ui.sortBy == "name" { - if ui.sortOrder == "desc" { + if ui.sortBy == nameSortKey { + if ui.sortOrder == descOrder { sort.Sort(sort.Reverse(fs.ByName(ui.currentDir.GetFiles()))) } else { sort.Sort(fs.ByName(ui.currentDir.GetFiles())) } } - if ui.sortBy == "mtime" { - if ui.sortOrder == "desc" { + if ui.sortBy == mtimeSortKey { + if ui.sortOrder == descOrder { sort.Sort(sort.Reverse(fs.ByMtime(ui.currentDir.GetFiles()))) } else { sort.Sort(fs.ByMtime(ui.currentDir.GetFiles())) @@ -76,15 +86,15 @@ func (ui *UI) sortItems() { } func (ui *UI) sortDevices() { - if ui.sortBy == "size" { - if ui.sortOrder == "desc" { + if ui.sortBy == sizeSortKey { + if ui.sortOrder == descOrder { sort.Sort(sort.Reverse(device.ByUsedSize(ui.devices))) } else { sort.Sort(device.ByUsedSize(ui.devices)) } } - if ui.sortBy == "name" { - if ui.sortOrder == "desc" { + if ui.sortBy == nameSortKey { + if ui.sortOrder == descOrder { sort.Sort(sort.Reverse(device.ByName(ui.devices))) } else { sort.Sort(device.ByName(ui.devices)) -- cgit v1.2.3 From e7dbd1ab21039927cde67717917553c3cfaf4aeb Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 15:46:15 +0200 Subject: refactor: constants for colors --- tui/actions.go | 4 ++-- tui/format.go | 40 ++++++++++++++++++++++++++-------------- tui/show.go | 12 ++++++------ 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/tui/actions.go b/tui/actions.go index 92347e7..215e052 100644 --- a/tui/actions.go +++ b/tui/actions.go @@ -339,9 +339,9 @@ func (ui *UI) showInfo() { selectedFile := ui.table.GetCell(row, column).GetReference().(fs.Item) if ui.UseColors { - numberColor = "[#e67100::b]" + numberColor = orangeBold } else { - numberColor = "[::b]" + numberColor = defaultColorBold } linesCount := 12 diff --git a/tui/format.go b/tui/format.go index 84ad967..001c004 100644 --- a/tui/format.go +++ b/tui/format.go @@ -9,6 +9,18 @@ import ( "github.com/rivo/tview" ) +const ( + blackOnWhite = "[black:white:-]" + blackOnBlue = "[#000000:#2479d0:-]" + whiteOnBlack = "[white:black:-]" + + orangeBold = "[#e67100::b]" + blueBold = "[#3498db::b]" + + defaultColor = "[-::]" + defaultColorBold = "[::b]" +) + func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, ignored bool) string { var part int @@ -23,9 +35,9 @@ func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, row := string(item.GetFlag()) if ui.UseColors && !marked && !ignored { - row += "[#e67100::b]" + row += orangeBold } else { - row += "[::b]" + row += defaultColorBold } if ui.ShowApparentSize { @@ -42,21 +54,21 @@ func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, if ui.showItemCount { if ui.UseColors && !marked && !ignored { - row += "[#e67100::b]" + row += orangeBold } else { - row += "[::b]" + row += defaultColorBold } row += fmt.Sprintf("%11s ", ui.formatCount(item.GetItemCount())) } if ui.showMtime { if ui.UseColors && !marked && !ignored { - row += "[#e67100::b]" + row += orangeBold } else { - row += "[::b]" + row += defaultColorBold } row += fmt.Sprintf( - "%s [-::]", + "%s "+defaultColor, item.GetMtime().Format("2006-01-02 15:04:05"), ) } @@ -72,9 +84,9 @@ func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, if item.IsDir() { if ui.UseColors && !marked && !ignored { - row += "[#3498db::b]/" + row += blueBold + "/" } else { - row += "[::b]/" + row += defaultColorBold + "/" } } row += tview.Escape(item.GetName()) @@ -85,15 +97,15 @@ func (ui *UI) formatSize(size int64, reverseColor bool, transparentBg bool) stri var color string if reverseColor { if ui.UseColors { - color = "[#000000:#2479d0:-]" + color = blackOnBlue } else { - color = "[black:white:-]" + color = blackOnWhite } } else { if transparentBg { - color = "[-::]" + color = defaultColor } else { - color = "[white:black:-]" + color = whiteOnBlack } } @@ -105,7 +117,7 @@ func (ui *UI) formatSize(size int64, reverseColor bool, transparentBg bool) stri func (ui *UI) formatCount(count int) string { row := "" - color := "[-::]" + color := defaultColor count64 := float64(count) switch { diff --git a/tui/show.go b/tui/show.go index 0beeeff..e194f48 100644 --- a/tui/show.go +++ b/tui/show.go @@ -147,10 +147,10 @@ func (ui *UI) showDir() { var footerNumberColor, footerTextColor string if ui.UseColors { footerNumberColor = "[#ffffff:#2479d0:b]" - footerTextColor = "[#000000:#2479d0:-]" + footerTextColor = blackOnBlue } else { footerNumberColor = "[black:white:b]" - footerTextColor = "[black:white:-]" + footerTextColor = blackOnWhite } selected := "" @@ -214,10 +214,10 @@ func (ui *UI) showDevices() { var footerNumberColor, footerTextColor string if ui.UseColors { footerNumberColor = "[#ffffff:#2479d0:b]" - footerTextColor = "[#000000:#2479d0:-]" + footerTextColor = blackOnBlue } else { footerNumberColor = "[black:white:b]" - footerTextColor = "[black:white:-]" + footerTextColor = blackOnWhite } ui.footerLabel.SetText( @@ -297,8 +297,8 @@ func (ui *UI) formatHelpTextFor() string { for i, line := range lines { if ui.UseColors { lines[i] = strings.ReplaceAll( - strings.ReplaceAll(line, "[::b]", "[red]"), - "[white:black:-]", + strings.ReplaceAll(line, defaultColorBold, "[red]"), + whiteOnBlack, "[white]", ) } -- cgit v1.2.3 From 4ed4f05d572e6f8f7d54becf2592fbac7ff4cac7 Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 15:58:29 +0200 Subject: refactor: explicit return --- cmd/gdu/app/app.go | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/cmd/gdu/app/app.go b/cmd/gdu/app/app.go index 4169077..802921b 100644 --- a/cmd/gdu/app/app.go +++ b/cmd/gdu/app/app.go @@ -122,14 +122,14 @@ func init() { } // Run starts gdu main logic -func (a *App) Run() (err error) { +func (a *App) Run() error { var ui UI if a.Flags.ShowVersion { fmt.Fprintln(a.Writer, "Version:\t", build.Version) fmt.Fprintln(a.Writer, "Built time:\t", build.Time) fmt.Fprintln(a.Writer, "Built user:\t", build.User) - return + return nil } log.Printf("Runtime flags: %+v", *a.Flags) @@ -139,11 +139,14 @@ func (a *App) Run() (err error) { } path := a.getPath() - path, _ = filepath.Abs(path) + path, err := filepath.Abs(path) + if err != nil { + return err + } ui, err = a.createUI() if err != nil { - return + return err } if a.Flags.UseStorage { @@ -155,21 +158,21 @@ func (a *App) Run() (err error) { if a.Flags.FollowSymlinks { ui.SetFollowSymlinks(true) } - if err = a.setNoCross(path); err != nil { - return + if err := a.setNoCross(path); err != nil { + return err } ui.SetIgnoreDirPaths(a.Flags.IgnoreDirs) if len(a.Flags.IgnoreDirPatterns) > 0 { - if err = ui.SetIgnoreDirPatterns(a.Flags.IgnoreDirPatterns); err != nil { - return + if err := ui.SetIgnoreDirPatterns(a.Flags.IgnoreDirPatterns); err != nil { + return err } } if a.Flags.IgnoreFromFile != "" { - if err = ui.SetIgnoreFromFile(a.Flags.IgnoreFromFile); err != nil { - return + if err := ui.SetIgnoreFromFile(a.Flags.IgnoreFromFile); err != nil { + return err } } @@ -179,12 +182,11 @@ func (a *App) Run() (err error) { a.setMaxProcs() - if err = a.runAction(ui, path); err != nil { - return + if err := a.runAction(ui, path); err != nil { + return err } - err = ui.StartUILoop() - return + return ui.StartUILoop() } func (a *App) getPath() string { -- cgit v1.2.3 From cf98385b1e09bfa41bc567ad0686cf0fe9f4b259 Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 16:07:12 +0200 Subject: refactor: if-else to switch --- cmd/gdu/app/app.go | 16 +++++++++------- tui/format.go | 7 ++++--- tui/show.go | 7 ++++--- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/cmd/gdu/app/app.go b/cmd/gdu/app/app.go index 802921b..7f9612c 100644 --- a/cmd/gdu/app/app.go +++ b/cmd/gdu/app/app.go @@ -210,7 +210,8 @@ func (a *App) setMaxProcs() { func (a *App) createUI() (UI, error) { var ui UI - if a.Flags.OutputFile != "" { + switch { + case a.Flags.OutputFile != "": var output io.Writer var err error if a.Flags.OutputFile == "-" { @@ -229,7 +230,7 @@ func (a *App) createUI() (UI, error) { a.Flags.ConstGC, a.Flags.UseSIPrefix, ) - } else if a.Flags.NonInteractive || !a.Istty { + case a.Flags.NonInteractive || !a.Istty: ui = stdout.CreateStdoutUI( a.Writer, !a.Flags.NoColor && a.Istty, @@ -241,7 +242,7 @@ func (a *App) createUI() (UI, error) { a.Flags.UseSIPrefix, a.Flags.NoPrefix, ) - } else { + default: var opts []tui.Option if a.Flags.Style.SelectedRow.TextColor != "" { @@ -348,11 +349,12 @@ func (a *App) runAction(ui UI, path string) error { }() } - if a.Flags.ShowDisks { + switch { + case a.Flags.ShowDisks: if err := ui.ListDevices(a.Getter); err != nil { return fmt.Errorf("loading mount points: %w", err) } - } else if a.Flags.InputFile != "" { + case a.Flags.InputFile != "": var input io.Reader var err error if a.Flags.InputFile == "-" { @@ -367,12 +369,12 @@ func (a *App) runAction(ui UI, path string) error { if err := ui.ReadAnalysis(input); err != nil { return fmt.Errorf("reading analysis: %w", err) } - } else if a.Flags.ReadFromStorage { + case a.Flags.ReadFromStorage: ui.SetAnalyzer(analyze.CreateStoredAnalyzer(a.Flags.StoragePath)) if err := ui.ReadFromStorage(a.Flags.StoragePath, path); err != nil { return fmt.Errorf("reading from storage (%s): %w", a.Flags.StoragePath, err) } - } else { + default: if build.RootPathPrefix != "" { path = build.RootPathPrefix + path } diff --git a/tui/format.go b/tui/format.go index 001c004..03d4460 100644 --- a/tui/format.go +++ b/tui/format.go @@ -24,11 +24,12 @@ const ( func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, ignored bool) string { var part int - if ignored { + switch { + case ignored: part = 0 - } else if ui.ShowApparentSize { + case ui.ShowApparentSize: part = int(float64(item.GetSize()) / float64(maxSize) * 100.0) - } else { + default: part = int(float64(item.GetUsage()) / float64(maxUsage) * 100.0) } diff --git a/tui/show.go b/tui/show.go index e194f48..b8709fd 100644 --- a/tui/show.go +++ b/tui/show.go @@ -131,12 +131,13 @@ func (ui *UI) showDir() { cell := tview.NewTableCell(ui.formatFileRow(item, maxUsage, maxSize, marked, ignored)) cell.SetReference(ui.currentDir.GetFiles()[i]) - if ignored { + switch { + case ignored: cell.SetStyle(tcell.Style{}.Foreground(tview.Styles.SecondaryTextColor)) - } else if marked { + case marked: cell.SetStyle(tcell.Style{}.Foreground(tview.Styles.PrimaryTextColor)) cell.SetBackgroundColor(tview.Styles.ContrastBackgroundColor) - } else { + default: cell.SetStyle(tcell.Style{}.Foreground(tcell.ColorDefault)) } -- cgit v1.2.3 From 337eefece8f059678687487684580a0c73938be7 Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 16:07:35 +0200 Subject: refactor: small fixes --- tui/format.go | 4 ++-- tui/marked.go | 1 - tui/tui.go | 4 ++-- tui/tui_test.go | 4 ++-- tui/utils.go | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tui/format.go b/tui/format.go index 03d4460..5f48d99 100644 --- a/tui/format.go +++ b/tui/format.go @@ -21,7 +21,7 @@ const ( defaultColorBold = "[::b]" ) -func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, ignored bool) string { +func (ui *UI) formatFileRow(item fs.Item, maxUsage, maxSize int64, marked, ignored bool) string { var part int switch { @@ -94,7 +94,7 @@ func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, return row } -func (ui *UI) formatSize(size int64, reverseColor bool, transparentBg bool) string { +func (ui *UI) formatSize(size int64, reverseColor, transparentBg bool) string { var color string if reverseColor { if ui.UseColors { diff --git a/tui/marked.go b/tui/marked.go index fb5ac91..db9d3e9 100644 --- a/tui/marked.go +++ b/tui/marked.go @@ -52,7 +52,6 @@ func (ui *UI) deleteMarked(shouldEmpty bool) { go func() { for _, one := range markedItems { - ui.app.QueueUpdateDraw(func() { modal.SetText( // nolint: staticcheck // Why: fixed string diff --git a/tui/tui.go b/tui/tui.go index c895d3e..23d0599 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -207,8 +207,8 @@ func (ui *UI) SetSelectedBackgroundColor(color tcell.Color) { // SetCurrentItemNameMaxLen sets the maximum length of the path of the currently processed item // to be shown in the progress modal -func (ui *UI) SetCurrentItemNameMaxLen(len int) { - ui.currentItemNameMaxLen = len +func (ui *UI) SetCurrentItemNameMaxLen(maxLen int) { + ui.currentItemNameMaxLen = maxLen } // UseOldSizeBar uses the old size bar (# chars) instead of the new one (unicode block elements) diff --git a/tui/tui_test.go b/tui/tui_test.go index 0e80d7a..33a600d 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -192,7 +192,7 @@ func TestDirSelected(t *testing.T) { fin := testdir.CreateTestDir() defer fin() - ui := getAnalyzedPathMockedApp(t, true, true, false) + ui := getAnalyzedPathMockedApp(t, true, false, false) ui.done = make(chan struct{}) ui.fileItemSelected(0, 0) @@ -814,7 +814,7 @@ func getDevicesInfoMock() device.DevicesInfoGetter { return mock } -func getAnalyzedPathMockedApp(t *testing.T, useColors, apparentSize bool, mockedAnalyzer bool) *UI { +func getAnalyzedPathMockedApp(t *testing.T, useColors, apparentSize, mockedAnalyzer bool) *UI { simScreen := testapp.CreateSimScreen() defer simScreen.Fini() diff --git a/tui/utils.go b/tui/utils.go index 351f679..6403dbd 100644 --- a/tui/utils.go +++ b/tui/utils.go @@ -47,7 +47,7 @@ func getUsageGraph(part int) string { } func getUsageGraphOld(part int) string { - part = part / 10 + part /= 10 graph := "[" for i := 0; i < 10; i++ { if part > i { -- cgit v1.2.3 From 96ddbaa5fa8cefe584db30d2ee37429c01fd51cf Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 16:18:30 +0200 Subject: refactor: empty fallthrough --- tui/actions.go | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/tui/actions.go b/tui/actions.go index 215e052..d09216b 100644 --- a/tui/actions.go +++ b/tui/actions.go @@ -300,14 +300,8 @@ func (ui *UI) showFile() *tview.TextView { return event } - switch { - case event.Rune() == 'j': - fallthrough - case event.Rune() == 'G': - fallthrough - case event.Key() == tcell.KeyDown: - fallthrough - case event.Key() == tcell.KeyPgDn: + if event.Rune() == 'j' || event.Rune() == 'G' || + event.Key() == tcell.KeyDown || event.Key() == tcell.KeyPgDn { _, _, _, height := file.GetInnerRect() row, _ := file.GetScrollOffset() if height+row > totalLines-linesTreshold { -- cgit v1.2.3 From 693a37c05c13c3499107cbad3e5d283190c95e85 Mon Sep 17 00:00:00 2001 From: Daniel Milde Date: Wed, 24 Apr 2024 16:28:49 +0200 Subject: refactor: empty fallthrough --- tui/mouse.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tui/mouse.go b/tui/mouse.go index c8aa95c..991c62e 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -33,9 +33,7 @@ func (ui *UI) onMouse(event *tcell.EventMouse, action tview.MouseAction) (*tcell } } return nil, action - case tview.MouseScrollUp: - fallthrough - case tview.MouseScrollDown: + case tview.MouseScrollUp, tview.MouseScrollDown: row, column := ui.table.GetSelection() if action == tview.MouseScrollUp && row > 0 { row-- -- cgit v1.2.3