#lang racket/base (require racket/file racket/path simple-ini "util.rkt") (provide manager-ini-file manager-state-file ensure-default-manager-ini! load-manager-ini ini-ref/bool ini-ref/int ini-ref/string ini-ref/path ini-ref/addresses) (define (manager-ini-file base-dir*) (build-path (filesystem-path base-dir*) ".flac-48khz-manager.ini")) (define (manager-state-file base-dir*) (build-path (filesystem-path base-dir*) ".music-info.db")) (define (ensure-default-manager-ini! ini-file) (unless (file-exists? ini-file) (define ini (make-ini)) (ini-set! ini 'manager 'max-sample-rate 48000) (ini-set! ini 'manager 'hash-algorithm "sha256") (ini-set! ini 'manager 'change-detection "flac-taglib") (ini-set! ini 'manager 'dry-run #f) (ini-set! ini 'manager 'display-log #t) (ini-set! ini 'manager 'log-file ".flac-48khz-manager.log") (ini-set! ini 'manager 'compression-level 5) (ini-set! ini 'opus-manager 'log-file ".flac2opus-manager.log") (ini-set! ini 'mail 'enabled #f) (ini-set! ini 'mail 'send-on-success #f) (ini-set! ini 'mail 'send-on-error #t) (ini-set! ini 'mail 'host "") (ini-set! ini 'mail 'port 25) (ini-set! ini 'mail 'tls #f) (ini-set! ini 'mail 'username "") (ini-set! ini 'mail 'password "") (ini-set! ini 'mail 'from "") (ini-set! ini 'mail 'to "") (ini-set! ini 'mail 'cc "") (ini-set! ini 'mail 'bcc "") (ini-set! ini 'mail 'subject-prefix "[flac-48khz-manager]") (ini->file ini ini-file))) (define (load-manager-ini base-dir*) (define ini-file (manager-ini-file base-dir*)) (ensure-default-manager-ini! ini-file) (file->ini ini-file)) (define (ini-ref/bool ini section key default) (bool-value (ini-get ini section key default) default)) (define (ini-ref/int ini section key default) (int-value (ini-get ini section key default) default)) (define (ini-ref/string ini section key default) (string-value (ini-get ini section key default) default)) (define (resolve-ini-path base-dir v default) (define p (string-value v default)) (cond [(path-string? p) (define bp (string->path p)) (if (absolute-path? bp) bp (build-path base-dir bp))] [else (build-path base-dir default)])) (define (ini-ref/path ini base-dir section key default) (resolve-ini-path (filesystem-path base-dir) (ini-get ini section key default) default)) (define (ini-ref/addresses ini section key default) (split-addresses (ini-get ini section key default)))