52 lines
1.5 KiB
Scheme
52 lines
1.5 KiB
Scheme
![]() |
(define-module (msg config)
|
||
|
#:use-module (ice-9 ftw)
|
||
|
#:use-module (ice-9 rdelim)
|
||
|
#:declarative? #f
|
||
|
#:export (manage-config))
|
||
|
(define config-data #f)
|
||
|
|
||
|
;;; Function to load a config file
|
||
|
(define (load-config config-file)
|
||
|
(if (file-exists? config-file)
|
||
|
(call-with-input-file config-file
|
||
|
(lambda (port)
|
||
|
(read port)))
|
||
|
(begin
|
||
|
(display "Config file not found, creating default config")
|
||
|
(newline)
|
||
|
;; Return a default value (in this case, #f)
|
||
|
(values #f))))
|
||
|
|
||
|
;;; Function to save a config file
|
||
|
(define (save-config filename config)
|
||
|
(with-output-to-file filename
|
||
|
(lambda ()
|
||
|
(display (format #f "~A" config)))))
|
||
|
|
||
|
;;; Function to create a default config
|
||
|
(define (create-default-config )
|
||
|
'( ;; Default configuration values
|
||
|
(cpu . "4")
|
||
|
(mem . "4")
|
||
|
;; Add more default key-value pairs as needed
|
||
|
))
|
||
|
|
||
|
(define (manage-config filename)
|
||
|
(let* ((config (load-config filename))
|
||
|
(default-config (create-default-config)))
|
||
|
(cond
|
||
|
((eq? config #f)
|
||
|
(begin
|
||
|
(display "Creating default config...\n")
|
||
|
(save-config filename default-config)
|
||
|
(set! config default-config)
|
||
|
(values config)))
|
||
|
((unspecified? config)
|
||
|
(begin
|
||
|
(display "Invalid config file. Reverting to default config...\n")
|
||
|
(save-config filename default-config)
|
||
|
(set! config default-config)
|
||
|
(values config)))
|
||
|
(else
|
||
|
(values config)))))
|