msg-cli/msg/config.scm

52 lines
1.5 KiB
Scheme
Raw Normal View History

(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)))))