Changed config.rkt to simple-ini.
This commit is contained in:
@@ -1,110 +0,0 @@
|
||||
#lang racket/base
|
||||
|
||||
(require racket/file
|
||||
racket/path
|
||||
simple-ini
|
||||
"util.rkt")
|
||||
|
||||
(provide manager-config?
|
||||
manager-config-base-dir
|
||||
manager-config-ini-file
|
||||
manager-config-state-file
|
||||
manager-config-log-file
|
||||
manager-config-log-file-opus
|
||||
manager-config-max-sample-rate
|
||||
manager-config-hash-algorithm
|
||||
manager-config-change-detection
|
||||
manager-config-dry-run?
|
||||
manager-config-display-log?
|
||||
manager-config-compression-level
|
||||
manager-config-mail-enabled?
|
||||
manager-config-mail-send-on-success?
|
||||
manager-config-mail-send-on-error?
|
||||
manager-config-mail-host
|
||||
manager-config-mail-port
|
||||
manager-config-mail-tls?
|
||||
manager-config-mail-username
|
||||
manager-config-mail-password
|
||||
manager-config-mail-from
|
||||
manager-config-mail-to
|
||||
manager-config-mail-cc
|
||||
manager-config-mail-bcc
|
||||
manager-config-mail-subject-prefix
|
||||
load-manager-config
|
||||
ensure-default-config!)
|
||||
|
||||
(struct manager-config
|
||||
(base-dir ini-file state-file log-file log-file-opus max-sample-rate hash-algorithm change-detection dry-run?
|
||||
display-log? compression-level mail-enabled? mail-send-on-success?
|
||||
mail-send-on-error? mail-host mail-port mail-tls? mail-username
|
||||
mail-password mail-from mail-to mail-cc mail-bcc mail-subject-prefix)
|
||||
#:transparent)
|
||||
|
||||
(define (default-log-file base-dir)
|
||||
(build-path base-dir ".flac-48khz-manager.log"))
|
||||
|
||||
(define (default-ini base-dir)
|
||||
(build-path base-dir ".flac-48khz-manager.ini"))
|
||||
|
||||
(define (default-state base-dir)
|
||||
(build-path base-dir ".music-info.db"))
|
||||
|
||||
(define (ensure-default-config! 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 '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 (resolve-log-file base-dir v)
|
||||
(define p (string-value v ".flac-48khz-manager.log"))
|
||||
(cond [(path-string? p)
|
||||
(define bp (string->path p))
|
||||
(if (absolute-path? bp) bp (build-path base-dir bp))]
|
||||
[else (default-log-file base-dir)]))
|
||||
|
||||
(define (load-manager-config base-dir*)
|
||||
(define base-dir (simple-form-path base-dir*))
|
||||
(define ini-file (default-ini base-dir))
|
||||
(ensure-default-config! ini-file)
|
||||
(define ini (file->ini ini-file))
|
||||
(define log-file (resolve-log-file base-dir (ini-get ini 'manager 'log-file ".flac-48khz-manager.log")))
|
||||
(define log-file-opus (resolve-log-file base-dir (ini-get ini 'opus-manager 'log-file ".flac2opus-manager.log")))
|
||||
(manager-config base-dir ini-file (default-state base-dir) log-file log-file-opus
|
||||
(int-value (ini-get ini 'manager 'max-sample-rate 48000) 48000)
|
||||
(string-downcase (string-value (ini-get ini 'manager 'hash-algorithm "sha256") "sha256"))
|
||||
(string-downcase (string-value (ini-get ini 'manager 'change-detection "flac-taglib") "flac-taglib"))
|
||||
(bool-value (ini-get ini 'manager 'dry-run #f) #f)
|
||||
(bool-value (ini-get ini 'manager 'display-log #t) #t)
|
||||
(int-value (ini-get ini 'manager 'compression-level 5) 5)
|
||||
(bool-value (ini-get ini 'mail 'enabled #f) #f)
|
||||
(bool-value (ini-get ini 'mail 'send-on-success #f) #f)
|
||||
(bool-value (ini-get ini 'mail 'send-on-error #t) #t)
|
||||
(string-value (ini-get ini 'mail 'host "") "")
|
||||
(int-value (ini-get ini 'mail 'port 25) 25)
|
||||
(bool-value (ini-get ini 'mail 'tls #f) #f)
|
||||
(string-value (ini-get ini 'mail 'username "") "")
|
||||
(string-value (ini-get ini 'mail 'password "") "")
|
||||
(string-value (ini-get ini 'mail 'from "") "")
|
||||
(split-addresses (ini-get ini 'mail 'to ""))
|
||||
(split-addresses (ini-get ini 'mail 'cc ""))
|
||||
(split-addresses (ini-get ini 'mail 'bcc ""))
|
||||
(string-value (ini-get ini 'mail 'subject-prefix "[flac-48khz-manager]") "[flac-48khz-manager]")))
|
||||
+16
-16
@@ -4,7 +4,7 @@
|
||||
racket/string
|
||||
racket/tcp
|
||||
net/base64
|
||||
"config.rkt"
|
||||
"manager-ini.rkt"
|
||||
"report.rkt")
|
||||
|
||||
(provide maybe-send-report-mail
|
||||
@@ -113,22 +113,22 @@
|
||||
(close-input-port in)
|
||||
(close-output-port out))))
|
||||
|
||||
(define (maybe-send-report-mail config summary errors
|
||||
(define (maybe-send-report-mail ini summary errors
|
||||
#:manager-name [manager-name "FLAC 48 kHz manager"]
|
||||
#:result-label [result-label "converted"])
|
||||
(define has-errors? (positive? (summary-ref summary 'errors 0)))
|
||||
(define should-send?
|
||||
(and (manager-config-mail-enabled? config)
|
||||
(not (null? (manager-config-mail-to config)))
|
||||
(or (and has-errors? (manager-config-mail-send-on-error? config))
|
||||
(and (not has-errors?) (manager-config-mail-send-on-success? config)))))
|
||||
(and (ini-ref/bool ini 'mail 'enabled #f)
|
||||
(not (null? (ini-ref/addresses ini 'mail 'to "")))
|
||||
(or (and has-errors? (ini-ref/bool ini 'mail 'send-on-error #t))
|
||||
(and (not has-errors?) (ini-ref/bool ini 'mail 'send-on-success #f)))))
|
||||
(when should-send?
|
||||
(define from (mail-address->envelope-address (manager-config-mail-from config)))
|
||||
(define to (clean-address-list (manager-config-mail-to config)))
|
||||
(define cc (clean-address-list (manager-config-mail-cc config)))
|
||||
(define bcc (clean-address-list (manager-config-mail-bcc config)))
|
||||
(define from (mail-address->envelope-address (ini-ref/string ini 'mail 'from "")))
|
||||
(define to (clean-address-list (ini-ref/addresses ini 'mail 'to "")))
|
||||
(define cc (clean-address-list (ini-ref/addresses ini 'mail 'cc "")))
|
||||
(define bcc (clean-address-list (ini-ref/addresses ini 'mail 'bcc "")))
|
||||
(define subject (format "~a ~a: ~a error(s), ~a ~a"
|
||||
(manager-config-mail-subject-prefix config)
|
||||
(ini-ref/string ini 'mail 'subject-prefix "[flac-48khz-manager]")
|
||||
manager-name
|
||||
(summary-ref summary 'errors 0)
|
||||
(summary-ref summary 'converted 0)
|
||||
@@ -142,8 +142,8 @@
|
||||
#:bcc bcc
|
||||
#:body-content-type "text/html"))
|
||||
(strict-send-smtp-mail mail
|
||||
#:host (string-trim (manager-config-mail-host config))
|
||||
#:port (manager-config-mail-port config)
|
||||
#:tls-encode (manager-config-mail-tls? config)
|
||||
#:username (string-trim (manager-config-mail-username config))
|
||||
#:password (manager-config-mail-password config))))
|
||||
#:host (string-trim (ini-ref/string ini 'mail 'host ""))
|
||||
#:port (ini-ref/int ini 'mail 'port 25)
|
||||
#:tls-encode (ini-ref/bool ini 'mail 'tls #f)
|
||||
#:username (string-trim (ini-ref/string ini 'mail 'username ""))
|
||||
#:password (ini-ref/string ini 'mail 'password ""))))
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
#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)))
|
||||
Reference in New Issue
Block a user