From 46ada1b2649b1842534d8bf4c547c2648cbf2220 Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Sat, 22 May 2021 23:33:01 +0200 Subject: [PATCH] Add RAM detection support for macOS --- eshell-info-banner.el | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/eshell-info-banner.el b/eshell-info-banner.el index fa147d1..25329a2 100644 --- a/eshell-info-banner.el +++ b/eshell-info-banner.el @@ -2,7 +2,7 @@ ;; Author: Lucien Cartier-Tilet ;; Maintainer: Lucien Cartier-Tilet -;; Version: 0.4.2 +;; Version: 0.4.3 ;; Package-Requires: ((emacs "24") (dash "2") (f "0.20") (s "1")) ;; Homepage: https://labs.phundrak.com/phundrak/eshell-info-banner.el @@ -359,9 +359,32 @@ For TEXT-PADDING and BAR-LENGTH, see the documentation of nil) (defun eshell-info-banner--get-memory/darwin () - "Get memory usage for macOS and Darwin-based OSes." - (message "Memory usage not yet implemented for macOS and Darwin-based OSes") - nil) + "Get memory usage for macOS." + (let* ((mem (s-lines (shell-command-to-string "vm_stat"))) + (mem (cl-remove-if-not (lambda (line) + (string-match-p "^Pages \\(free\\|active\\|inactive\\|speculative\\|wired\\)" + line)) + mem)) + (mem (mapcar (lambda (line) + (save-match-data + (string-match "^Pages \\([[:alpha:] ]+\\): *\\([[:digit:]]+\\)\\." line) + `(,(substring-no-properties line + (match-beginning 1) + (match-end 1)) + . + ,(string-to-number (substring-no-properties line + (match-beginning 2) + (match-end 2)))))) + mem)) + (total (cl-reduce (lambda (acc val) + (+ acc (cdr val))) + mem + :initial-value 0)) + (used (+ (cdr (assoc "active" mem)) + (cdr (assoc "wired down" mem))))) + `(("RAM" + ,(* 4096 total) + ,(* 4096 used))))) (defun eshell-info-banner--get-memory/windows () "Get memory usage for Window."