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