#!/usr/bin/env guile !# (define-module (reading-heap)) (use-modules (srfi srfi-1) (config) (config api) (config licenses) (config parser sexp) (reading-heap heap) (reading-heap media) (reading-heap zmq)) (define config (configuration (name 'rh-server) (synopsis "client for reading-heap") (keywords (list (setting (name 'media-library) (synopsis "media library location") (default (string-append (or (getenv "XDG_DATA_HOME") (string-append (getenv "HOME") "/.local/share")) "/media-library")) (character #f)) (setting (name 'service-socket) (synopsis "socket for communication with the service") (default (string-append "ipc://" (or (getenv "XDG_RUNTIME_DIR") "/tmp") "/reading-heap.sock")) (character #f)) (switch (name 'write) (synopsis "write the default config") (default #f) (test boolean?) (character #f)) (switch (name 'serve) (synopsis "server the media heap") (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) (copyright '(2023)) (version "0.1") (license agpl3+) (author "Christopher R. Nelson"))) (define (main cmd-line) (let ((options (getopt-config-auto cmd-line config))) (when (option-ref options 'write) (options-write options)) (when (option-ref options 'serve) (let* ((media (filetree->media-list (option-ref options 'media-library))) (priorities (map media-priority media)) (heap (fold heap-insert 'E priorities media))) (server-setup (option-ref options 'service-socket)) (rh-receive heap))))) (main (command-line))