shell-history/internal/add/add.go

34 lines
766 B
Go

package add
import (
"database/sql"
"flag"
"fmt"
"os"
"strings"
)
func Run(d *sql.DB, args []string) error {
fs := flag.NewFlagSet("add", flag.ExitOnError)
timestamp := fs.String("timestamp", "", "ISO 8601 timestamp")
hostname := fs.String("hostname", "", "hostname")
dir := fs.String("dir", "", "working directory")
fs.Parse(args)
if *timestamp == "" || *hostname == "" || *dir == "" {
fmt.Fprintln(os.Stderr, "usage: shist add --timestamp T --hostname H --dir D -- COMMAND...")
os.Exit(1)
}
command := strings.Join(fs.Args(), " ")
if command == "" {
return nil
}
_, err := d.Exec(
`INSERT OR IGNORE INTO history (timestamp, hostname, working_dir, command) VALUES (?, ?, ?, ?)`,
*timestamp, *hostname, *dir, command,
)
return err
}