Simplify code retrieving partitions between GNU and Darwin systems

Also bump revision number
This commit is contained in:
Lucien Cartier-Tilet 2021-11-07 00:02:28 +01:00
parent b2eff90711
commit 48470a4b85
Signed by: phundrak
GPG Key ID: BD7789E705CB8DCA
1 changed files with 23 additions and 32 deletions

View File

@ -2,7 +2,7 @@
;; Author: Lucien Cartier-Tilet <lucien@phundrak.com>
;; Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
;; Version: 0.6.0
;; Version: 0.6.1
;; Package-Requires: ((emacs "25") (dash "2") (f "0.20") (s "1"))
;; Homepage: https://labs.phundrak.com/phundrak/eshell-info-banner.el
@ -289,20 +289,22 @@ chosen. Relies on the `duf' command."
:percent percent)))
partitions)))
(defun eshell-info-banner--get-mounted-partitions/gnu ()
"Detect mounted partitions on a Linux system.
Return detected partitions as a list of structs. See
`eshell-info-banner-partition-prefixes' to see how partitions are
chosen. Relies on the `df' command."
(defun eshell-info-banner--get-mounted-partitions/df (mount-position)
"Get mounted partitions through df.
Common function between
`eshell-info-banner--get-mounted-partitions/gnu' and
`eshell-info-banner--get-mounted-partitions/darwing' which would
otherwise differ solely on the position of the mount point in the
partition list. Its position is given by the argument
MOUNT-POSITION."
(let ((partitions (split-string (eshell-info-banner--shell-command-to-string "df -lH") (regexp-quote "\n") t)))
(-keep (lambda (partition)
(let* ((partition (split-string partition " " t))
(filesystem (nth 0 partition))
(size (nth 1 partition))
(used (nth 2 partition))
(percent (nth 4 partition))
(mount (nth 5 partition)))
(filesystem (nth 0 partition))
(size (nth 1 partition))
(used (nth 2 partition))
(percent (nth 4 partition))
(mount (nth mount-position partition)))
(when (seq-some (lambda (prefix)
(string-prefix-p prefix filesystem t))
eshell-info-banner-partition-prefixes)
@ -316,6 +318,14 @@ chosen. Relies on the `df' command."
(string-trim-left percent (regexp-quote "%")))))))
partitions)))
(defun eshell-info-banner--get-mounted-partitions/gnu ()
"Detect mounted partitions on a Linux system.
Return detected partitions as a list of structs. See
`eshell-info-banner-partition-prefixes' to see how partitions are
chosen. Relies on the `df' command."
(eshell-info-banner--get-mounted-partitions/df 5))
(defun eshell-info-banner--get-mounted-partitions/windows ()
"Detect mounted partitions on a Windows system.
@ -332,26 +342,7 @@ chosen."
Return detected partitions as a list of structs. See
`eshell-info-banner-partition-prefixes' to see how partitions are
chosen. Relies on the `df' command."
(let ((partitions (split-string (eshell-info-banner--shell-command-to-string "df -lH") (regexp-quote "\n") t)))
(-keep (lambda (partition)
(let* ((partition (split-string partition " " t))
(filesystem (nth 0 partition))
(size (nth 1 partition))
(used (nth 2 partition))
(percent (nth 4 partition))
(mount (nth 8 partition)))
(when (seq-some (lambda (prefix)
(string-prefix-p prefix filesystem t))
eshell-info-banner-partition-prefixes)
(make-eshell-info-banner--mounted-partitions
:path (if (> (length mount) eshell-info-banner-shorten-path-from)
(eshell-info-banner--abbr-path mount t)
mount)
:size size
:used used
:percent (string-to-number
(string-trim-left percent (regexp-quote "%")))))))
partitions)))
(eshell-info-banner--get-mounted-partitions/df 8))
(defun eshell-info-banner--get-mounted-partitions ()
"Detect mounted partitions on the system.