 (defun straight-recipes-emacsmirror-list ()
   "Return a list of recipes available in EmacsMirror, as a list of strings."
   (append
-   (directory-files "mirror" nil "^[^.]" 'nosort)
-   (directory-files "attic" nil "^[^.]" 'nosort)))
+   (straight--directory-files "mirror")
+   (straight--directory-files "attic")))
 
 ;;;;; Recipe conversion
 

               (executable-find "install-info"))
      (let ((default-directory (straight--dir "build" package)))
        (when-let ((texinfo
                    (directory-files
                     default-directory
                     nil "\\.texi\\(nfo\\)?$" 'nosort)))
          (apply #'straight--check-call (cons "makeinfo" texinfo))
          (unless (file-exists-p "dir")
            (when-let ((info (directory-files
                              default-directory
                              nil "\\.info$" 'nosort)))
              (apply #'straight--check-call
                     (cons "install-info"
                           (append info '("dir")))))))))))

    (dolist (package (hash-table-keys straight--build-cache))
      (unless (gethash package straight--profile-cache)
        (remhash package straight--build-cache)))
    (dolist (package (straight--directory-files
                      (straight--dir "build")))
      ;; So, let me tell you a funny story. Once upon a time I didn't
      ;; have this `string-match-p' condition. But Emacs helpfully
      ;; returns . and .. from the call to `directory-files',
      ;; resulting in the entire build directory and its parent
      ;; directory also being deleted. Fun fun fun. (Now that I've
      ;; replaced `directory-files' with `straight--directory-files',
      ;; . and .. are no longer returned. But it's always good to be
      ;; paranoid with recursive deletes.)
      (unless (or (string-match-p "^\\.\\.?$" package)
                  (gethash package straight--profile-cache))
        (delete-directory (straight--dir "build" package) 'recursive)))))
