guile-pastebin/modules/pastebin/main.scm

main.scm

1
;;; SPDX-FileCopyrightText: 2021 Li Ian-Xue (b4283) <b4283@pm.me>
2
;;; SPDX-FileCopyrightText: 2025 Evgeny Pisemsky <mail@pisemsky.site>
3
;;;
4
;;; SPDX-License-Identifier: GPL-3.0-only
5
6
(define-module (pastebin main))
7
8
(use-modules (pastebin http)
9
             (ice-9 getopt-long)
10
             (web server))
11
12
(export run-pastebin)
13
14
(define (run-pastebin args)
15
  (let* ((option-spec '((addr (value #t))
16
                        (port (value #t))
17
                        (css-url (value #t))))
18
         (options (getopt-long args option-spec))
19
         (data-dir (car (option-ref options '() '())))
20
         (addr-str (option-ref options 'addr "127.0.0.1"))
21
         (port-str (option-ref options 'port "8080"))
22
         (css-url (option-ref options 'css-url #f)))
23
    (if (not (file-exists? data-dir))
24
        (mkdir data-dir))
25
    (run-server (make-pastebin-handler data-dir #:css-url css-url)
26
                'http
27
                (list #:addr (inet-pton AF_INET addr-str)
28
                      #:port (string->number port-str)))))
29