aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-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)))))