add delete key command

This commit is contained in:
juancwu 2026-01-11 18:16:55 -05:00
commit ec40ec2d12
3 changed files with 58 additions and 2 deletions

15
cmd.go
View file

@ -56,3 +56,18 @@ func handleUpdateKey(dbPath, userPattern, hostPattern, keyPath string) error {
return nil
}
func handleDeleteKey(dbPath string, id int) error {
db, err := initDB(dbPath)
if err != nil {
return err
}
defer db.Close()
err = deleteKey(db, id)
if err != nil {
return err
}
return nil
}

20
db.go
View file

@ -121,3 +121,23 @@ func updateKey(db *sql.DB, userPattern, hostPattern, keyPath string) error {
return nil
}
func deleteKey(db *sql.DB, id int) error {
res, err := db.Exec("DELETE FROM keys WHERE id = ?;", id)
if err != nil {
return fmt.Errorf("failed to delete key: %w", err)
}
rows, err := res.RowsAffected()
if err == nil {
if rows == 0 {
fmt.Printf("No key found with ID %d.\n", id)
} else {
fmt.Printf("Key with ID %d deleted.\n", id)
}
} else {
fmt.Println("Warning: could not confirm key deletion.", err)
}
return nil
}

21
main.go
View file

@ -4,6 +4,7 @@ import (
"flag"
"fmt"
"os"
"strconv"
)
func main() {
@ -13,6 +14,7 @@ func main() {
fmt.Fprintf(os.Stderr, " %s [flags] list-keys\n", os.Args[0])
fmt.Fprintf(os.Stderr, " %s [flags] add-key <user_pattern> <host_pattern> <path_to_key>\n", os.Args[0])
fmt.Fprintf(os.Stderr, " %s [flags] update-key <user_pattern> <host_pattern> <path_to_key>\n", os.Args[0])
fmt.Fprintf(os.Stderr, " %s [flags] delete-key <id>\n", os.Args[0])
fmt.Fprintf(os.Stderr, "\nFlags:\n")
flag.PrintDefaults()
}
@ -65,7 +67,26 @@ func main() {
os.Exit(1)
}
os.Exit(0)
case "delete-key":
if argc != 2 {
fmt.Println("Usage: gosh delete-key <id>")
os.Exit(1)
}
id, err := strconv.ParseInt(args[1], 10, 32)
if err != nil {
fmt.Println("Error:", err)
os.Exit(1)
}
err = handleDeleteKey(*dbPath, int(id))
if err != nil {
fmt.Println("Error:", err)
os.Exit(1)
}
os.Exit(0)
default:
startSSH(*dbPath, args)
}
}