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/
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.
### trash / tr
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
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
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
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
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`.
See gt(1) or `gt --help` for more in depth information on all command line flags.

View file

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

View file

@ -326,14 +326,19 @@ func (m model) showHelp() string {
if !m.readonly {
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(" • "))
}
func (m model) header() string {
// TODO: clean this ugly thing up
var (
right, left string
spacerWidth int
@ -352,30 +357,33 @@ func (m model) header() string {
}
dot = darkesttext.Render("•")
wideDot = darkesttext.Render(" • ")
keysFmt = strings.Join(keys, wideDot)
selectFmt = strings.Join(selectKeys, wideDot)
filterFmt = strings.Join(filterKeys, wideDot)
)
switch {
case m.filtering:
right = fmt.Sprintf(" Filtering %s %s", dot, filterFmt)
case m.mode == modes.Interactive:
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))
right = " " // to offset from the table border
switch m.mode {
case modes.Interactive:
right += strings.Join(keys, wideDot)
default:
var wd string
right += m.mode.String()
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)
}
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

View file

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