Added new config module for setting/retrieving vm configs
This commit is contained in:
parent
9a2a3ff3f2
commit
15218de075
4 changed files with 105 additions and 36 deletions
51
msg/config.scm
Normal file
51
msg/config.scm
Normal file
|
@ -0,0 +1,51 @@
|
|||
(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)))))
|
Loading…
Add table
Add a link
Reference in a new issue