Allow customising the maximum number of processes

This commit is contained in:
Christopher Baines 2019-12-16 19:57:56 +00:00
parent 96f897cf3b
commit c229ace8a5
2 changed files with 39 additions and 8 deletions

View file

@ -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)))))