emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/hyperdrive 2d3f038790 3/3: Change: (hyperdrive-delete) Mov


From: ELPA Syncer
Subject: [nongnu] elpa/hyperdrive 2d3f038790 3/3: Change: (hyperdrive-delete) Move into hyperdrive.el and autoload
Date: Fri, 6 Oct 2023 04:01:18 -0400 (EDT)

branch: elpa/hyperdrive
commit 2d3f038790afc86f7c0daa9d4dbaaeba6addd914
Author: Joseph Turner <joseph@ushin.org>
Commit: Joseph Turner <joseph@ushin.org>

    Change: (hyperdrive-delete) Move into hyperdrive.el and autoload
---
 hyperdrive-dir.el  |  1 +
 hyperdrive-lib.el  | 40 ----------------------------------------
 hyperdrive-menu.el |  1 +
 hyperdrive.el      | 41 +++++++++++++++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 40 deletions(-)

diff --git a/hyperdrive-dir.el b/hyperdrive-dir.el
index 018a0da7a6..ff0c3963ed 100644
--- a/hyperdrive-dir.el
+++ b/hyperdrive-dir.el
@@ -233,6 +233,7 @@ With point on header, returns directory entry."
 
 (declare-function hyperdrive-find-file "hyperdrive")
 (declare-function hyperdrive-up "hyperdrive")
+(declare-function hyperdrive-delete "hyperdrive")
 (declare-function hyperdrive-download "hyperdrive")
 (declare-function hyperdrive-describe-hyperdrive "hyperdrive-describe")
 ;; `hyperdrive-menu' is defined with `transient-define-prefix', which
diff --git a/hyperdrive-lib.el b/hyperdrive-lib.el
index f7cca8064b..09e3f1de94 100644
--- a/hyperdrive-lib.el
+++ b/hyperdrive-lib.el
@@ -877,46 +877,6 @@ HYPERDRIVE's public metadata file."
     (hyperdrive-persist hyperdrive)
     hyperdrive))
 
-(cl-defun hyperdrive-delete (entry &key (then #'ignore) (else #'ignore))
-  "Delete ENTRY, then call THEN with response.
-Call ELSE with `plz-error' struct if request fails.
-Interactively, read ENTRY with `hyperdrive-read-entry'."
-  (declare (indent defun))
-  (interactive
-   (let* ((entry (hyperdrive--context-entry))
-          (description (hyperdrive-entry-description entry))
-          (buffer (current-buffer)))
-     (when (and (hyperdrive--entry-directory-p entry)
-                (or (eq entry hyperdrive-current-entry)
-                    (string= ".." (alist-get 'display-name 
(hyperdrive-entry-etc entry)))))
-       (hyperdrive-user-error "Won't delete from within"))
-     (when (and (yes-or-no-p (format "Delete «%s»? " description))
-                (or (not (hyperdrive--entry-directory-p entry))
-                    (yes-or-no-p (format "Recursively delete «%s»? " 
description))))
-       (list entry
-             :then (lambda (_)
-                     (when (and (buffer-live-p buffer)
-                                (eq 'hyperdrive-dir-mode (buffer-local-value 
'major-mode buffer)))
-                       (with-current-buffer buffer
-                         (revert-buffer)))
-                     (hyperdrive-message "Deleted: «%s» (Deleted files can be 
accessed from prior versions of the hyperdrive.)" description))
-             :else (lambda (plz-error)
-                     (hyperdrive-message "Unable to delete «%s»: %S" 
description plz-error))))))
-  (hyperdrive-api 'delete (hyperdrive-entry-url entry)
-    :as 'response
-    :then (lambda (response)
-            (pcase-let* (((cl-struct plz-response headers) response)
-                         ((map etag) headers)
-                         (nonexistent-entry (hyperdrive-copy-tree entry t)))
-              (unless (hyperdrive--entry-directory-p entry)
-                ;; FIXME: hypercore-fetch bug doesn't update version
-                ;; number when deleting a directory.
-                (setf (hyperdrive-entry-version nonexistent-entry) 
(string-to-number etag))
-                (hyperdrive--fill-latest-version (hyperdrive-entry-hyperdrive 
entry) headers)
-                (hyperdrive-update-nonexistent-version-range 
nonexistent-entry))
-              (funcall then response)))
-    :else else))
-
 (cl-defun hyperdrive-purge-no-prompt (hyperdrive &key then else)
   "Purge all data corresponding to HYPERDRIVE, then call THEN with response.
 
diff --git a/hyperdrive-menu.el b/hyperdrive-menu.el
index 2b80674b7a..8a87f7ba72 100644
--- a/hyperdrive-menu.el
+++ b/hyperdrive-menu.el
@@ -38,6 +38,7 @@
 ;;;; Declarations
 
 (declare-function hyperdrive-dir--entry-at-point "hyperdrive-dir")
+(declare-function hyperdrive-delete "hyperdrive")
 (declare-function hyperdrive-set-nickname "hyperdrive")
 (declare-function hyperdrive-set-petname "hyperdrive")
 
diff --git a/hyperdrive.el b/hyperdrive.el
index fed152a496..360f18d54f 100644
--- a/hyperdrive.el
+++ b/hyperdrive.el
@@ -362,6 +362,47 @@ for more information.  See `hyperdrive-read-entry' and
   (interactive (list (hyperdrive-read-url :prompt "Open hyperdrive URL")))
   (hyperdrive-open (hyperdrive-url-entry url)))
 
+;;;###autoload
+(cl-defun hyperdrive-delete (entry &key (then #'ignore) (else #'ignore))
+  "Delete ENTRY, then call THEN with response.
+Call ELSE with `plz-error' struct if request fails.
+Interactively, read ENTRY with `hyperdrive-read-entry'."
+  (declare (indent defun))
+  (interactive
+   (let* ((entry (hyperdrive--context-entry))
+          (description (hyperdrive-entry-description entry))
+          (buffer (current-buffer)))
+     (when (and (hyperdrive--entry-directory-p entry)
+                (or (eq entry hyperdrive-current-entry)
+                    (string= ".." (alist-get 'display-name 
(hyperdrive-entry-etc entry)))))
+       (hyperdrive-user-error "Won't delete from within"))
+     (when (and (yes-or-no-p (format "Delete «%s»? " description))
+                (or (not (hyperdrive--entry-directory-p entry))
+                    (yes-or-no-p (format "Recursively delete «%s»? " 
description))))
+       (list entry
+             :then (lambda (_)
+                     (when (and (buffer-live-p buffer)
+                                (eq 'hyperdrive-dir-mode (buffer-local-value 
'major-mode buffer)))
+                       (with-current-buffer buffer
+                         (revert-buffer)))
+                     (hyperdrive-message "Deleted: «%s» (Deleted files can be 
accessed from prior versions of the hyperdrive.)" description))
+             :else (lambda (plz-error)
+                     (hyperdrive-message "Unable to delete «%s»: %S" 
description plz-error))))))
+  (hyperdrive-api 'delete (hyperdrive-entry-url entry)
+    :as 'response
+    :then (lambda (response)
+            (pcase-let* (((cl-struct plz-response headers) response)
+                         ((map etag) headers)
+                         (nonexistent-entry (hyperdrive-copy-tree entry t)))
+              (unless (hyperdrive--entry-directory-p entry)
+                ;; FIXME: hypercore-fetch bug doesn't update version
+                ;; number when deleting a directory.
+                (setf (hyperdrive-entry-version nonexistent-entry) 
(string-to-number etag))
+                (hyperdrive--fill-latest-version (hyperdrive-entry-hyperdrive 
entry) headers)
+                (hyperdrive-update-nonexistent-version-range 
nonexistent-entry))
+              (funcall then response)))
+    :else else))
+
 ;;;###autoload
 (defun hyperdrive-download (entry filename)
   "Download ENTRY to FILENAME on disk.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]