#!/usr/bin/env guile !# (define-module (reading-heap client)) (use-modules (simple-zmq) (config) (config api) (config parser sexp) (config licenses)) (define config (configuration (name 'rh-client) (synopsis "client for reading-heap") (keywords (list (setting (name 'service-socket) (synopsis "socket for communication with the service") (default (string-append "ipc://" (or (getenv "XDG_RUNTIME_DIR") "/tmp") "/reading-heap.sock"))) (switch (name 'write) (synopsis "write the default config") (default #f) (test boolean?) (character #f)) (switch (name 'next) (synopsis "get the next media to consume") (default #f) (test boolean?) (character #t)) )) (directory (list (in-home ".reading-heap/") (path (given (string-append (or (getenv "XDG_CONFIG_HOME") (string-append (getenv "HOME") "/.config")) "/reading-heap/")) (eager? #t)))) (parser sexp-parser))) (define context (zmq-create-context)) (define client-socket (zmq-create-socket context ZMQ_REQ)) (define (client-setup sock) (zmq-connect client-socket sock)) (define (rh-client-next) (zmq-send client-socket "next") (let ((msg (zmq-receive-bytevector client-socket 65335))) (display (bv->string msg)))) (define (main cmd-line) (let ((options (getopt-config-auto cmd-line config))) (when (option-ref options 'write) (options-write options)) (when (option-ref options 'next) (client-setup (option-ref options 'service-socket)) (rh-client-next)))) (main (command-line))