From ae92d284ce5a1c60f3c7cb8e336efeed7caf6df0 Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Sun, 4 Oct 2026 23:18:40 +0200 Subject: [PATCH] service creator added --- player-agent-cli.rkt | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/player-agent-cli.rkt b/player-agent-cli.rkt index 928d87d..c29bc7a 100644 --- a/player-agent-cli.rkt +++ b/player-agent-cli.rkt @@ -4,11 +4,13 @@ racket/contract racket/format racket/string + racket/os simple-log "private-player-agent/player-agent-config.rkt" "private-player-agent/player-agent-core.rkt") -(provide run-player-agent-cli) +(provide run-player-agent-cli + create-player-agent-service-file) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Supporting functions @@ -125,6 +127,45 @@ (kill-thread monitor)) ((player-agent-runtime-shutdown! runtime)))))) + + + +(define (create-player-agent-service-file url filename) + (let ((fh (open-output-file filename #:exists? 'replace))) + (for-each (lambda (l) + (displayln l out)) + (list + "[Unit]" + "Description=Racket Web Player Agent" + "After=network.target" + "" + "[Service]" + "Type=simple" + "User=root" + "Group=root" + "" + "WorkingDirectory=/tmp" + "" + (string-append + "ExecStart=/usr/local/bin/racket " + "-e " + "\"(require rkt-web-player/player-agent-cli) " + "(run-player-agent-cli #:server-url \\\"" url "\\\" #:name " (gethostname) ")\"" + ) + "" + "Restart=on-failure" + "RestartSec=5" + "" + "TimeoutStopSec=30" + "" + "[Install]" + "WantedBy=multi-user.target" + ) + ) + (close-output-port fh))) + + + (module+ main (define server-url #f) (define name #f)