diff options
author | Christopher Baines <mail@cbaines.net> | 2019-12-16 19:57:56 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-12-16 19:57:56 +0000 |
commit | c229ace8a5522b2c12559bb55fcc6d5abbeb8a55 (patch) | |
tree | 4e852c5188d99c259c3dc208f7de7c7a02ae4f16 /scripts | |
parent | 96f897cf3b68058a3a487175788a5ab9acca1d53 (diff) | |
download | data-service-c229ace8a5522b2c12559bb55fcc6d5abbeb8a55.tar data-service-c229ace8a5522b2c12559bb55fcc6d5abbeb8a55.tar.gz |
Allow customising the maximum number of processes
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/guix-data-service-process-jobs.in | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/scripts/guix-data-service-process-jobs.in b/scripts/guix-data-service-process-jobs.in index 51b01bd..3f4d6b0 100644 --- a/scripts/guix-data-service-process-jobs.in +++ b/scripts/guix-data-service-process-jobs.in @@ -30,8 +30,36 @@ (setvbuf (current-output-port) 'line) (setvbuf (current-error-port) 'line) -(with-postgresql-connection - "process-jobs" - (lambda (conn) - (simple-format #t "Ready to process jobs...\n") - (process-jobs conn))) +(define %options + ;; Specifications of the command-line options + (list (option '("max-processes") #t #f + (lambda (opt name arg result) + (alist-cons 'max-processes + (string->number arg) + result))))) + +(define %default-options + ;; Alist of default option values + `((max-processes ,default-max-processes))) + +(define (parse-options args) + (args-fold + args %options + (lambda (opt name arg result) + (error "unrecognized option" name)) + (lambda (arg result) + (alist-cons + 'revision-commits + (cons arg + (or (assoc-ref result 'revision-commits) + '())) + (alist-delete 'revision-commits result))) + %default-options)) + +(let ((opts (parse-options (cdr (program-arguments))))) + (with-postgresql-connection + "process-jobs" + (lambda (conn) + (simple-format #t "Ready to process jobs...\n") + (process-jobs conn + #:max-processes (assq-ref opts 'max-processes))))) |