Subject: [PATCH] Fix guix locate clear database "no files to search for" error and unnesecary database rebuilding

From: Maciej Kalandyk <[email-masked]>
Date: Sat, 28 Oct 2023 19:43:25 +0200

This patch fixes error with guix locate --clear that causes it to display error when no files are supplied

Change-Id: I0e9ca223d6406c78b0dd8ff93976c3077d89e103
Signed-off-by: Maciej Kalandyk <[email-masked]>
---
 guix/scripts/locate.scm | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/guix/scripts/locate.scm b/guix/scripts/locate.scm
index ae64f46896..93faa1aea2 100644
--- a/guix/scripts/locate.scm
+++ b/guix/scripts/locate.scm
@@ -634,6 +634,9 @@ (define-command (guix-locate . args)
               (_
                (leave (G_ "~a: unknown indexing method~%") method))))))
 
+      (if (and (null? files) (not (or update? clear?)))
+          (leave (G_ "no files to search for~%")))
+
       ;; Populate the database if needed.
       (let* ((stat   (stat database #f))
              (age    (and stat (file-age stat)))
@@ -649,20 +652,18 @@ (define-command (guix-locate . args)
 
       (if (assoc-ref opts 'stats?)
           (print-statistics database)
-          (match (call-with-database database
-                   (lambda (db)
-                     (append-map (lambda (file)
-                                   (matching-packages db file
-                                                      #:glob? glob?))
-                                 files)))
-            (()
-             (if (null? files)
-                 (unless update?
-                   (leave (G_ "no files to search for~%")))
+          (unless (null? files)
+              (match (call-with-database database
+                       (lambda (db)
+                         (append-map (lambda (file)
+                                       (matching-packages db file
+                                                          #:glob? glob?))
+                                     files)))
+                (()
                  (leave (N_ "file~{ '~a'~} not found in database '~a'~%"
                             "files~{ '~a'~} not found in database '~a'~%"
                             (length files))
-                        files database)))
-            (matches
-             (leave-on-EPIPE
-              (print-matching-results matches))))))))
+                        files database))
+                (matches
+                 (leave-on-EPIPE
+                  (print-matching-results matches)))))))))

base-commit: 6d7e181ba18d11c92409a93936025fb46b9c8171
-- 
2.41.0