feat: tilde for homedir, add reverse sort
This commit is contained in:
parent
dd65cb632f
commit
a422a86e69
|
|
@ -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 ' '
|
||||
)"
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue