34 lines
766 B
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
|
|
}
|