From 8fcb05ee54e250ae23113549e09fc11410829272 Mon Sep 17 00:00:00 2001 From: Caroline Larimore Date: Thu, 30 Jan 2025 22:26:55 -0800 Subject: Add dismissal commands --- cmd/corvid/main.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'cmd/corvid/main.go') diff --git a/cmd/corvid/main.go b/cmd/corvid/main.go index 9064ad6..53c84aa 100644 --- a/cmd/corvid/main.go +++ b/cmd/corvid/main.go @@ -1,10 +1,61 @@ package main import ( + "fmt" + "os" + "strconv" + "github.com/CartConnoisseur/corvid/srv" + "github.com/godbus/dbus/v5" ) func main() { + if len(os.Args) < 2 { + server() + } + + switch os.Args[1] { + case "server": + server() + case "dismiss": + if len(os.Args) < 3 { + fmt.Println("dismiss command requires positional argument 'id'") + os.Exit(1) + } + + id, err := strconv.ParseInt(os.Args[2], 0, 32) + if err != nil || id <= 0 { + fmt.Printf("invalid value for positional argument 'id' (must be u64): %s\n", os.Args[2]) + os.Exit(1) + } + + call("Dismiss", uint32(id)) + case "dismiss-all": + call("DismissAll") + default: + fmt.Printf("unknown subcommand: %s\n", os.Args[1]) + os.Exit(1) + } +} + +func server() { srv.Start() select {} } + +func call(name string, args ...interface{}) error { + const CORVID_DBUS_OBJECT = "/sh/cxl/Corvid" + const CORVID_DBUS_NAME = "sh.cxl.Corvid" + + conn, err := dbus.SessionBus() + if err != nil { + return err + } + + call := conn.Object(CORVID_DBUS_NAME, CORVID_DBUS_OBJECT).Call(CORVID_DBUS_NAME+"."+name, 0, args...) + if call.Err != nil { + return call.Err + } + + return nil +} -- cgit v1.2.3