aboutsummaryrefslogtreecommitdiff
path: root/scripts/guix-data-service-process-jobs.in
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-12-16 19:57:56 +0000
committerChristopher Baines <mail@cbaines.net>2019-12-16 19:57:56 +0000
commitc229ace8a5522b2c12559bb55fcc6d5abbeb8a55 (patch)
tree4e852c5188d99c259c3dc208f7de7c7a02ae4f16 /scripts/guix-data-service-process-jobs.in
parent96f897cf3b68058a3a487175788a5ab9acca1d53 (diff)
downloaddata-service-c229ace8a5522b2c12559bb55fcc6d5abbeb8a55.tar
data-service-c229ace8a5522b2c12559bb55fcc6d5abbeb8a55.tar.gz
Allow customising the maximum number of processes
Diffstat (limited to 'scripts/guix-data-service-process-jobs.in')
-rw-r--r--scripts/guix-data-service-process-jobs.in38
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)))))