feat: tilde for homedir, add reverse sort

This commit is contained in:
Viktor Varland 2026-02-16 20:15:07 +01:00
parent dd65cb632f
commit a422a86e69
No known key found for this signature in database
GPG key ID: 991E991EBEC46432
3 changed files with 24 additions and 8 deletions

View file

@ -56,11 +56,13 @@ hs() {
esac ;;
esac
local strip='awk -F" " "{OFS=\" \"; \$4=\"\"; gsub(/ +/,\" \"); print}"'
local entry="$(
verbatim search "$@" | \
verbatim search --reverse "$@" | eval $strip | \
fzf --ansi --disabled --query "${*:-}" \
--bind "start:reload:verbatim search {q}" \
--bind "change:reload:sleep 0.1; verbatim search {q} || true" \
--bind "start:reload:verbatim search --reverse {q} | $strip" \
--bind "change:reload:sleep 0.1; verbatim search --reverse {q} | $strip || true" \
--delimiter ' '
)"

View file

@ -25,9 +25,14 @@ func Run(d *sql.DB, args []string) error {
return nil
}
wd := *dir
if home, err := os.UserHomeDir(); err == nil && home != "" {
wd = strings.Replace(wd, home, "~", 1)
}
_, err := d.Exec(
`INSERT OR IGNORE INTO history (timestamp, hostname, working_dir, command) VALUES (?, ?, ?, ?)`,
*timestamp, *hostname, *dir, command,
*timestamp, *hostname, wd, command,
)
return err
}

View file

@ -5,6 +5,7 @@ import (
"flag"
"fmt"
"strings"
"time"
)
func Run(d *sql.DB, args []string) error {
@ -14,6 +15,7 @@ func Run(d *sql.DB, args []string) error {
after := fs.String("after", "", "filter entries after timestamp")
before := fs.String("before", "", "filter entries before timestamp")
limit := fs.Int("limit", 10000, "max results")
reverse := fs.Bool("reverse", false, "newest first")
fs.Parse(args)
query := strings.Join(fs.Args(), " ")
@ -49,7 +51,11 @@ func Run(d *sql.DB, args []string) error {
inner += " ORDER BY timestamp DESC LIMIT ?"
params = append(params, *limit)
q := "SELECT * FROM (" + inner + ") ORDER BY timestamp ASC"
outerOrder := "ASC"
if *reverse {
outerOrder = "DESC"
}
q := "SELECT * FROM (" + inner + ") ORDER BY timestamp " + outerOrder
rows, err := d.Query(q, params...)
if err != nil {
@ -58,11 +64,14 @@ func Run(d *sql.DB, args []string) error {
defer rows.Close()
for rows.Next() {
var ts, h, dir, cmd string
if err := rows.Scan(&ts, &h, &dir, &cmd); err != nil {
var ts, h, wd, cmd string
if err := rows.Scan(&ts, &h, &wd, &cmd); err != nil {
return err
}
fmt.Printf("%s %s %s %s\n", ts, h, dir, cmd)
if t, err := time.Parse(time.RFC3339, ts); err == nil {
ts = t.Format("2006-01-02 15:04")
}
fmt.Printf("%s %s %s %s\n", ts, h, wd, cmd)
}
return rows.Err()
}