scripts: Add worker option to refresh database.
authorRicardo Wurmus <rekado@elephly.net>
Thu, 12 Mar 2020 09:57:47 +0000 (10:57 +0100)
committerRicardo Wurmus <rekado@elephly.net>
Thu, 12 Mar 2020 09:57:47 +0000 (10:57 +0100)
* scripts/mumi.in: Update the mu index and the Sqlite database when
the "--worker" option is provided.

scripts/mumi.in

index 81cb887f0ee07324d97845069b0570ebf5125a91..82e231938388cbed1471fa4bfc5977ee843161fe 100644 (file)
              (ice-9 match)
              (ice-9 threads)
              (mumi config)
+             (mumi bugs)
              (mumi messages)
              (mumi web server)
              (debbugs))
 
+(db-create!)
+
 (define %default-repl-server-port
   ;; Default port to run REPL server on, if --listen-repl is provided
   ;; but no port is mentioned
   37146)
 
+;; Keep indexing the mail directory
+(define %update-interval 60)
+(define mu-index
+  (let ((mu (%config 'mu-executable)))
+    (lambda _
+      (let* ((maildir (%config 'mail-dir))
+             (args (list "index"
+                         "--quiet"
+                         (format #f "--muhome=~a" maildir)
+                         (format #f "--maildir=~a" maildir))))
+        (unless (zero? (apply system* mu args))
+          (format (current-error-port)
+                  "Failed to run `~a'~%" command))))))
+
+(define update-state!
+  (lambda _
+    (mu-index)
+    (update-bug-database!)
+    (sleep %update-interval)
+    (update-state!)))
+
 (define %options
   ;; Specifications of the command-line options
   (list (option '("listen-repl") #f #t
                         (error "invalid REPL server port" arg)))))
         (option '("fetch") #f #f
                 (lambda (opt name arg result)
-                  (alist-cons 'fetch #t result)))))
+                  (alist-cons 'fetch #t result)))
+        (option '("worker") #f #f
+                (lambda (opt name arg result)
+                  (alist-cons 'worker #t result)))))
 
 (define %default-options
   ;; Alist of default option values
   `((listen-repl . #f)
-    (fetch . #f)))
+    (fetch . #f)
+    (worker . #f)))
 
 (define (parse-options args)
   (args-fold
@@ -67,6 +95,8 @@
 
 (let ((opts (parse-options (cdr (program-arguments)))))
   (cond
+   ((assoc-ref opts 'worker)
+    (update-state!))
    ((assoc-ref opts 'fetch)
     (let ((bug-nums
            (sort (append-map (lambda (package)
    (else
     (let ((repl-port (assoc-ref opts 'listen-repl)))
       (when repl-port
-        (spawn-server (make-tcp-server-socket #:port repl-port)))))))
-
-;; Keep indexing the mail directory
-(define %mu-index-interval 30)
-(define mu-index
-  (let ((mu (%config 'mu-executable)))
-    (lambda _
-      (let* ((maildir (%config 'mail-dir))
-             (args (list "index"
-                         "--quiet"
-                         (format #f "--muhome=~a" maildir)
-                         (format #f "--maildir=~a" maildir))))
-        (unless (zero? (apply system* mu args))
-          (format (current-error-port)
-                  "Failed to run `~a'~%" command))
-        (alarm %mu-index-interval)))))
-(sigaction SIGALRM mu-index 0)
-(mu-index)
-
-(use-modules (mumimu))
-(mu:initialize (%config 'mail-dir))
-(start-mumi-web-server 1234)
+        (spawn-server (make-tcp-server-socket #:port repl-port))))
+    (use-modules (mumimu))
+    (mu:initialize (%config 'mail-dir))
+    (start-mumi-web-server 1234))))