diff options
author | Tom Willemse | 2013-05-13 22:48:49 +0200 |
---|---|---|
committer | Tom Willemse | 2013-05-13 22:48:49 +0200 |
commit | fb1977fc8326a5e76514d106cff85149f996794a (patch) | |
tree | 8c3fe56a9eccaa8f3b48795401a23cb563b298cc /gitto/config.scm | |
parent | d61e3814a5791ab75201c1c00b3e7bf76c3dbd83 (diff) | |
download | gitto-config.tar.gz gitto-config.zip |
Add config management commandsconfig
Diffstat (limited to 'gitto/config.scm')
-rw-r--r-- | gitto/config.scm | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/gitto/config.scm b/gitto/config.scm index 14151f6..26b2dce 100644 --- a/gitto/config.scm +++ b/gitto/config.scm @@ -18,8 +18,34 @@ ;; along with gitto. If not, see <http://www.gnu.org/licenses/>. (define-module (gitto config) + #:use-module (ice-9 format) #:use-module (ice-9 rdelim) - #:export (read-config write-config)) + #:export (global-config + + merge-config + read-config + write-config)) + +(define global-config '()) + +(define (merge-config repo-name x y) + (let ((lst (if x (list-copy x) '()))) + (for-each + (lambda (s) + (let ((b-sec (assoc (car s) lst))) + (set! lst (assoc-set! + lst (car s) (merge-settings + repo-name (if b-sec (cdr b-sec) #f) (cdr s)))))) + y) + lst)) + +(define (merge-settings repo-name x y) + (let ((lst (if x (list-copy x) '()))) + (for-each (lambda (v) + (set! lst (assoc-set! + lst (car v) (format #f (cdr v) repo-name)))) + y) + lst)) (define (parse-setting line) (let ((idx (string-index line #\=))) |