aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorCaroline Larimore <caroline@larimo.re>2025-01-30 22:26:55 -0800
committerCaroline Larimore <caroline@larimo.re>2025-01-30 22:26:55 -0800
commit8fcb05ee54e250ae23113549e09fc11410829272 (patch)
tree273c26a838973fdb448134be8ef34b791722338a /cmd
parentd9ddbfa1b7e697884f2be1ea9f11f8ecb5a2027d (diff)
Add dismissal commands
Diffstat (limited to 'cmd')
-rw-r--r--cmd/corvid-msg/main.go22
-rw-r--r--cmd/corvid/main.go51
2 files changed, 51 insertions, 22 deletions
diff --git a/cmd/corvid-msg/main.go b/cmd/corvid-msg/main.go
deleted file mode 100644
index abb87a5..0000000
--- a/cmd/corvid-msg/main.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package main
-
-import (
- "log"
-
- "github.com/godbus/dbus/v5"
-)
-
-func main() {
- const CORVID_DBUS_OBJECT = "/sh/cxl/Corvid"
- const CORVID_DBUS_NAME = "sh.cxl.Corvid"
-
- conn, err := dbus.SessionBus()
- if err != nil {
- log.Fatal(err)
- }
-
- call := conn.Object(CORVID_DBUS_NAME, CORVID_DBUS_OBJECT).Call(CORVID_DBUS_NAME+".Test", 0, uint32(13))
- if call.Err != nil {
- log.Fatal(call.Err)
- }
-}
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
+}