                                               (cdar futures)
                                               ", ")))
                      (throw 'timeout (pop futures)))
-                   (sleep-for 2)
-                   (cl-incf time)
-                   (print! "."))
+                   (sleep-for 1)
+                   (when (cl-evenp time)
+                     (print! "."))
+                   (cl-incf time))
                  (cl-destructuring-bind (status . result)
                      (or (async-get (car (pop futures)))
                          (cons nil nil))

                                         group future)))
               (error! "Failed to create any threads")))
          (total (length futures))
          (timeout 20))
     (condition-case-unless-debug e
         (let (specs)
           (while futures

;;
;;; Dispatchers

(defcli! (update u) (&rest args)
  "Updates packages.

This works by fetching all installed package repos and checking the distance
between HEAD and FETCH_HEAD. This can take a while.

This excludes packages whose `package!' declaration contains a non-nil :freeze
or :ignore property."
  (doom--ensure-autoloads-while
   (straight-check-all)
   (doom-packages-update
    doom-auto-accept
    (when-let (timeout (cadr (or (member "--timeout" args)
                                 (member "-t" args))))
      (string-to-number timeout)))))

(defcli! (rebuild build b) (&rest args)
  "Rebuilds all installed packages.
