Compare commits

..

No commits in common. "e57afe835dddc48b00c8533931a08dbf6778e1ba" and "be41eadb43c9d675ecf54ce468af60ac0dc9dc12" have entirely different histories.

5 changed files with 37 additions and 125 deletions

1
.gitignore vendored
View file

@ -1,2 +1 @@
bin/ bin/
dist/

View file

@ -15,102 +15,15 @@ Run with no command and only filename(s) as argument(s) to skip displaying files
Files are displayed in an interactive table, allowing them to be sorted, filtered, and selectively operated on. Files are displayed in an interactive table, allowing them to be sorted, filtered, and selectively operated on.
### trash / tr ### trash / tr
Find files on the filesystem based on the filter flags and any filename args. Find files on the filesystem based on the filter flags and any filename args.
#### flags
*--recursive*, *-r*
operate on files recursively
*--work-dir* dir, *-w* dir
operate on files in this directory
*--hidden*, *-h*
operate on hidden files
### list / ls ### list / ls
Find files in the trash based on the filter flags and any filename args. Find files in the trash based on the filter flags and any filename args.
#### flags
*--non-interactive*, *-n*
list files and quit
*--original-path* dir, *-O* dir
list files trashed from this directory
### restore / re ### restore / re
Find files in the trash based on the filter flags and any filename args. Find files in the trash based on the filter flags and any filename args.
#### flags
*--all*, *-a*
operate on all files in trash
*--original-path* dir, *-O* dir
restore files trashed from this directory
### clean / cl ### clean / cl
Find files in the trash based on the filter flags and any filename args. Find files in the trash based on the filter flags and any filename args.
#### flags See gt(1) or `gt --help` for more in depth information on all command line flags.
*--all*, *-a*
operate on all files in trash
*--original-path* dir, *-O* dir
remove files trashed from this directory
## Flags
### Global flags
*--confirm*, *-c*
ask for confirmation before executing any action
*--log* level, *-l* level
set log level
### Filter flags (usable with all commands)
*--match* pattern, *-m* pattern
operate on files matching regex pattern
*--glob* pattern, *-m* pattern
operate on files matching glob
*--not-match* pattern, *-M* pattern
operate on files not matching regex pattern
*--not-glob* pattern, *-G* pattern
operate on files not matching glob
*--on* date, *-O* date
operate on files modified on date
*--before* date, *-B* date
operate on files modified before date
*--after* date, *-A* date
operate on files modified after date
*--files-only*, *-F*
operate on files only
*--dirs-only*, *-D*
operate on directories only
*--min-size* size, *-N* size
operate on files larger than size
*--max-size* size, *-X* size
operate on files smaller than size
*--mode* mode, *-x* mode
operate on files matching mode mode
See also gt(1) or `gt --help`.

View file

@ -51,7 +51,7 @@ _flags_:
operate on files recursively operate on files recursively
*--work-dir* dir, *-w* dir *--work-dir* dir, *-w* dir
operate on files in this directory operate on files in this `DIRECTORY`
*--hidden*, *-h* *--hidden*, *-h*
operate on hidden files operate on hidden files

View file

@ -326,14 +326,19 @@ func (m model) showHelp() string {
if !m.readonly { if !m.readonly {
if m.mode != modes.Interactive { if m.mode != modes.Interactive {
keys = append([]string{styleKey(m.keys.doit)}, keys...) keys = append([]string{
styleKey(m.keys.doit),
}, keys...)
} }
keys = append([]string{styleKey(m.keys.mark)}, keys...) keys = append([]string{
styleKey(m.keys.mark),
}, keys...)
} }
return strings.Join(keys, darkesttext.Render(" • ")) return strings.Join(keys, darkesttext.Render(" • "))
} }
func (m model) header() string { func (m model) header() string {
// TODO: clean this ugly thing up
var ( var (
right, left string right, left string
spacerWidth int spacerWidth int
@ -350,32 +355,35 @@ func (m model) header() string {
styleKey(m.keys.clfl), styleKey(m.keys.clfl),
styleKey(m.keys.apfl), styleKey(m.keys.apfl),
} }
dot = darkesttext.Render("•") dot = darkesttext.Render("•")
wideDot = darkesttext.Render(" • ") wideDot = darkesttext.Render(" • ")
keysFmt = strings.Join(keys, wideDot)
selectFmt = strings.Join(selectKeys, wideDot)
filterFmt = strings.Join(filterKeys, wideDot)
) )
switch { right = " " // to offset from the table border
case m.filtering: switch m.mode {
right = fmt.Sprintf(" Filtering %s %s", dot, filterFmt) case modes.Interactive:
case m.mode == modes.Interactive: right += strings.Join(keys, wideDot)
right = fmt.Sprintf(" %s %s %s", keysFmt, dot, selectFmt)
left = fmt.Sprintf("%d/%d %s %s", len(m.selected), len(m.fltrfiles), dot, humanize.Bytes(uint64(m.selectsize)))
case m.mode == modes.Listing:
var filtered string
if m.filter != "" || m.filtering {
filtered = " (filtered)"
}
right = fmt.Sprintf(" Showing%s %d files in trash", filtered, len(m.fltrfiles))
default: default:
var wd string right += m.mode.String()
if m.workdir != "" { if m.workdir != "" {
wd = " in " + dirs.UnExpand(m.workdir, "") right += fmt.Sprintf(" in %s", dirs.UnExpand(m.workdir, ""))
} }
right = fmt.Sprintf(" %s%s %s %s", m.mode.String(), wd, dot, selectFmt) }
left = fmt.Sprintf("%d/%d %s %s", len(m.selected), len(m.fltrfiles), dot, humanize.Bytes(uint64(m.selectsize))) right += fmt.Sprintf(" %s %s", dot, strings.Join(selectKeys, wideDot))
left = fmt.Sprintf("%d/%d %s %s", len(m.selected), len(m.fltrfiles), dot, humanize.Bytes(uint64(m.selectsize)))
if m.mode == modes.Listing {
title := "Showing"
if m.filter != "" || m.filtering {
title += " (filtered)"
}
right = fmt.Sprintf(" %s %d files in trash", title, len(m.fltrfiles))
left = ""
}
if m.filtering {
right = fmt.Sprintf(" Filtering %s %s", dot, strings.Join(filterKeys, wideDot))
} }
// offset of 2 again because of table border // offset of 2 again because of table border

View file

@ -1,10 +1,7 @@
binary := "gt" binary := "gt"
version := "0.0.1"
build_dir := "bin" build_dir := "bin"
dist_dir := "dist"
cmd := "." cmd := "."
output := "." / build_dir / binary output := "." / build_dir / binary
dist := "." / dist_dir / binary
# do the thing # do the thing
default: test check install default: test check install
@ -13,12 +10,9 @@ default: test check install
build: build:
go build -o {{output}} {{cmd}} go build -o {{output}} {{cmd}}
package: # build windows binary
go build -o {{binary}} build-windows:
distrobox enter alpine -- go build -o {{binary}}-musl {{cmd}} GOOS=windows GOARCH=amd64 go build -o {{output}}.exe {{cmd}}
tar cafv {{dist_dir}}/{{binary}}-{{version}}-x86_64.tar.gz {{binary}} README.md LICENSE
tar cafv {{dist_dir}}/{{binary}}-{{version}}-x86_64-musl.tar.gz {{binary}}-musl README.md LICENSE
rm {{binary}} {{binary}}-musl
# run from source # run from source
run: run:
@ -43,9 +37,7 @@ install-man:
# clean up after yourself # clean up after yourself
clean: clean:
-rm {{output}} rm {{output}}
-rm {{output}}-musl
-rm {{dist_dir}}/*
# run go tests # run go tests
test: test: