diff options
author | Daniel Milde <daniel@milde.cz> | 2024-04-24 16:34:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-24 16:34:11 +0200 |
commit | 4cdc89dd143bbb4df0de94560a0fe069ea63f526 (patch) | |
tree | 266b670599adb9cb0d38536f5402cd762cea0715 | |
parent | 2558cf7fc7b50a534cc559c48f947ff8b9367943 (diff) | |
parent | 693a37c05c13c3499107cbad3e5d283190c95e85 (diff) |
Merge pull request #352 from dundee/dundee/refactor/lint
refactor: lints
-rw-r--r-- | cmd/gdu/app/app.go | 46 | ||||
-rw-r--r-- | internal/common/ignore_test.go | 8 | ||||
-rw-r--r-- | tui/actions.go | 14 | ||||
-rw-r--r-- | tui/format.go | 51 | ||||
-rw-r--r-- | tui/marked.go | 1 | ||||
-rw-r--r-- | tui/mouse.go | 4 | ||||
-rw-r--r-- | tui/show.go | 19 | ||||
-rw-r--r-- | tui/sort.go | 48 | ||||
-rw-r--r-- | tui/tui.go | 4 | ||||
-rw-r--r-- | tui/tui_test.go | 4 | ||||
-rw-r--r-- | tui/utils.go | 2 |
11 files changed, 110 insertions, 91 deletions
diff --git a/cmd/gdu/app/app.go b/cmd/gdu/app/app.go index 4169077..7f9612c 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 { @@ -208,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 == "-" { @@ -227,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, @@ -239,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 != "" { @@ -346,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 == "-" { @@ -365,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/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) } diff --git a/tui/actions.go b/tui/actions.go index 92347e7..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 { @@ -339,9 +333,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..5f48d99 100644 --- a/tui/format.go +++ b/tui/format.go @@ -9,23 +9,36 @@ import ( "github.com/rivo/tview" ) -func (ui *UI) formatFileRow(item fs.Item, maxUsage int64, maxSize int64, marked, ignored bool) string { +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, 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) } row := string(item.GetFlag()) if ui.UseColors && !marked && !ignored { - row += "[#e67100::b]" + row += orangeBold } else { - row += "[::b]" + row += defaultColorBold } if ui.ShowApparentSize { @@ -42,21 +55,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,28 +85,28 @@ 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()) 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 { - 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 +118,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/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/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-- diff --git a/tui/show.go b/tui/show.go index 0beeeff..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)) } @@ -147,10 +148,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 +215,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 +298,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]", ) } 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)) @@ -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 { |