-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.lisp
63 lines (51 loc) · 3.02 KB
/
config.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
;;;; config.lisp --- configuration parameters
;;; Copyright (C) 2020 Kayisoft, Inc.
;;; Author: Mohammad Matini <[email protected]>
;;; Maintainer: Mohammad Matini <[email protected]>
;;; Description: This file defines various configuration parameters for
;;; Kayishort; server port, SQLite database path, and API access
;;; token. Also, it includes utilities to refresh those values at run-time
;;; for better interactive development experience.
;;; This file is part of Kayishort.
;;; Kayishort is free software: you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation, either version 3 of the License, or
;;; (at your option) any later version.
;;; Kayishort is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;; You should have received a copy of the GNU General Public License
;;; along with Kayishort. If not, see <https://www.gnu.org/licenses/>.
(in-package #:net.kayisoft.kayishort)
;;; --------------------------------------------------------------------------
;;; Server
;;; --------------------------------------------------------------------------
;;; --------------------------------------------------------------------------
(defparameter *api-access-token*
(or (uiop:getenv "KAYISHORT_API_TOKEN")
"IU89SyvaHF++1czA8ZBzIxhqQbpa2CyO/bk=")
"Password for API authentication.")
;;; --------------------------------------------------------------------------
(defparameter *server-port*
(parse-integer (or (uiop:getenv "KAYISHORT_SERVER_PORT") "80") :junk-allowed t)
"Port on which the server will listen.")
;;; --------------------------------------------------------------------------
;;; Database
;;; --------------------------------------------------------------------------
;;; --------------------------------------------------------------------------
(defparameter *database-path*
(or (uiop:getenv "KAYISHORT_DATABASE_PATH") "./data/store.db")
"The path for the sqlite3 database.")
;;; --------------------------------------------------------------------------
;;; Utilities
;;; --------------------------------------------------------------------------
;;; --------------------------------------------------------------------------
(defun refresh-config-from-current-env ()
"Loads the latest state of configuration environmental variables"
(let ((api-access-token (uiop:getenv "KAYISHORT_API_TOKEN"))
(server-port (uiop:getenv "KAYISHORT_SERVER_PORT"))
(database-path (uiop:getenv "KAYISHORT_DATABASE_PATH")))
(when api-access-token (setf *api-access-token* api-access-token))
(when server-port (setf *server-port* (parse-integer server-port :junk-allowed t)))
(when database-path (setf *database-path* database-path))))