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

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

[elpa] externals/cpupower f7c0f6a724 1/4: Maintainer review 1 -> main


From: ELPA Syncer
Subject: [elpa] externals/cpupower f7c0f6a724 1/4: Maintainer review 1 -> main
Date: Fri, 6 May 2022 13:57:29 -0400 (EDT)

branch: externals/cpupower
commit f7c0f6a724c8ff47c13ab03b3a27691c61af23a0
Author: steve m <pallagun@gmail.com>
Commit: steve m <pallagun@gmail.com>

    Maintainer review 1 -> main
---
 .elpaignore |  1 +
 .gitignore  |  4 +++-
 README.md   |  3 +++
 cpupower.el | 78 ++++++++++++++++++++++++++++++++++++-------------------------
 4 files changed, 53 insertions(+), 33 deletions(-)

diff --git a/.elpaignore b/.elpaignore
new file mode 100644
index 0000000000..5ecd9c64ad
--- /dev/null
+++ b/.elpaignore
@@ -0,0 +1 @@
+COPYING
diff --git a/.gitignore b/.gitignore
index 016d3b1692..5b4e87ea34 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
-*.elc
\ No newline at end of file
+*.elc
+/cpupower-autoloads.el
+/cpupower-pkg.el
diff --git a/README.md b/README.md
index ab48b05efc..f446d67b2d 100644
--- a/README.md
+++ b/README.md
@@ -13,3 +13,6 @@ Using quelpa:
 
 Running `M-x cpupower-info` or `M-x cpupower-set-governor` will
 probably be what you want to do.
+
+Additionally there is `M-x cpupower-helm-set-governor` for those with
+`'helm`.
diff --git a/cpupower.el b/cpupower.el
index c635c772c2..9f93d76577 100644
--- a/cpupower.el
+++ b/cpupower.el
@@ -1,10 +1,10 @@
 ;;; cpupower.el --- cpupower command interface  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2021 Stephen Meister
+;; Copyright (C) 2021  Free Software Foundation, Inc.
 
 ;; Author: Stephen Meister
 ;; URL: https://gitlab.com/steve-emacs-stuff/cpupower-el
-;; Version: 1.0.2
+;; Version: 1.0.3
 ;; Keywords: hardware, cpupower, cpu, frequency-scaling
 
 ;; This program is free software: you can redistribute it and/or modify
@@ -28,8 +28,6 @@
 ;; command line).  You can configure how cpupower is called by
 ;; customizing cpupower-cmd.
 ;;
-;; This module interacts with cpupower via running it in a shell.
-;;
 ;; The commands you'll probably want to use:
 ;; * cpupower-info
 ;;   - displays (briefly) the current cpupower information
@@ -45,6 +43,11 @@
 ;;   - returns a list of all cpu governors by core.
 
 ;;; Code:
+(defgroup cpupower nil
+  "Interface to cpupower."
+  :group 'external
+  :tag "Cpupower"
+  :prefix "cpupower-")
 
 (defcustom cpupower-cmd
   "sudo cpupower"
@@ -61,13 +64,13 @@ messages buffer"
   :group 'cpupower)
 
 (defconst cpupower--compatible-versions
-  '("5.4")
+  '("5.4" "5.12")
   "Versions of cpupower which cpupower.el can work with.
 
 It is possible that other versions of cpupower have the same
 command line input/output structure.  If you are working with a
 version of cpupower not listed here but you suspect is
-compatible, extending this list with you version will all you to
+compatible, extending this list with your version will all you to
 test.")
 
 (defvar cpupower--cache
@@ -95,7 +98,7 @@ will be called if the value is not cached."
 Note: this function skips the safety check because the safety
 check is composed of this function."
   (cpupower--with-cache-slot :version
-    (let* ((output (cpupower--run "--version" t))
+    (let* ((output (cpupower--run '("--version") t))
            (tokens (split-string output)))
       (when (string-equal (car tokens) "cpupower")
         (cadr tokens)))))
@@ -108,14 +111,15 @@ acceptible version."
   (let ((is-valid (cpupower--with-cache-slot :valid
                     (cl-member (cpupower--get-version)
                                cpupower--compatible-versions
-                               :test 'string-equal))))
+                               :test #'string-equal))))
     (unless is-valid
       (let ((version (cpupower--get-version)))
         (if (null version)
             (error "Unable to communicate with cpupower (shell command: 
\"%s\")"
                    cpupower-cmd)
           (error "Invalid cpu power version %s.  Must be one of: %s"
-                 version (mapconcat 'identity cpupower--compatible-versions ", 
")))))))
+                 version (mapconcat #'identity
+                                    cpupower--compatible-versions ", ")))))))
 
 (defun cpupower--get-num-cpus ()
   "Return the number of CPUs on this system."
@@ -130,23 +134,32 @@ cpus but currently it just finds _all_ governors."
   (cpupower--with-cache-slot :governors
     (seq-uniq
      (mapcan
-      'split-string
-      (cpupower--parse-find (cpupower--run "--cpu all frequency-info")
+      #'split-string
+      (cpupower--parse-find (cpupower--run '("--cpu" "all" "frequency-info"))
                             "available cpufreq governors:"
-                            "\n")))))
+                            "\n"))
+     #'equal)))
 
-(defun cpupower--run (subcommand &optional skip-safety-check)
-  "Execute cpupower with SUBCOMMAND arguments return the output as a string.
+(defun cpupower--run (args &optional skip-safety-check)
+  "Execute cpupower with ARGS (list of args) returning the output as a string.
 
 When SKIP-SAFETY-CHECK is non-nil the cpupower configuration will
-be checked before executing any commands."
+not be checked before executing any commands."
   (unless skip-safety-check
     (cpupower--ensure-executable-valid))
-  (with-temp-buffer
-    (let ((command (format "%s %s" cpupower-cmd subcommand)))
+  (let* ((listified-command (split-string cpupower-cmd))
+         (actual-command (car listified-command)))
+    (with-temp-buffer
       (when cpupower-enable-logging
-        (message "cpupower.el cmd: %s" command))
-      (shell-command command (current-buffer))
+        (message "cpupower.el cmd: %s %s"
+                 cpupower-cmd
+                 args))
+      (apply #'call-process
+             (cl-concatenate 'list
+                             `(,actual-command)
+                             '(nil t nil)
+                             (cdr listified-command)
+                             args))
       (buffer-string))))
 
 (defun cpupower--format-KHz (KHz)
@@ -186,11 +199,12 @@ function returns: (\"and\" \"too\")
 This is indented as the primary way for humans to see this
 information."
   (interactive)
-  (let ((governors (seq-uniq (cpupower-get-current-governors) 'string-equal))
-        (frequencies (mapcar 'cpupower--format-KHz 
(cpupower-get-current-frequencies))))
+  (let ((governors (seq-uniq (cpupower-get-current-governors) #'string-equal))
+        (frequencies (mapcar #'cpupower--format-KHz
+                             (cpupower-get-current-frequencies))))
     (message "Governor: %s [ %s ] (version: %s)"
-             (mapconcat 'identity governors ", ")
-             (mapconcat 'identity frequencies ", ")
+             (mapconcat #'identity governors ", ")
+             (mapconcat #'identity frequencies ", ")
              (cpupower--get-version))))
 
 (defun cpupower-set-governor (governor)
@@ -199,7 +213,7 @@ information."
   (let ((valid-governors (cpupower--get-available-governors)))
     (unless (member governor valid-governors)
       (error "Invalid governor: %s, must be one of %s" governor 
valid-governors))
-    (cpupower--run (format "--cpu all frequency-set -g %s" governor))
+    (cpupower--run `("--cpu" "all" "frequency-set" "-g" ,governor))
     (cpupower-info)))
 
 (defun cpupower-get-current-frequencies (&optional print-message)
@@ -208,12 +222,12 @@ information."
 When called interactively (PRINT-MESSAGE will be true) it will
 message the user with current CPU frequencies."
   (interactive "p")
-  (let* ((output (cpupower--run "--cpu all frequency-info -f"))
-         (frequencies (mapcar 'string-to-number
+  (let* ((output (cpupower--run '("--cpu" "all" "frequency-info" "-f")))
+         (frequencies (mapcar #'string-to-number
                               (cpupower--parse-find output "frequency:"))))
     (when print-message
       (message (format "CPU Frequencies: %s"
-                       (mapconcat 'cpupower--format-KHz frequencies ", "))))
+                       (mapconcat #'cpupower--format-KHz frequencies ", "))))
     frequencies))
 
 (defun cpupower-get-current-governors (&optional print-message)
@@ -222,14 +236,14 @@ message the user with current CPU frequencies."
 When called interactively (PRINT-MESSAGE will be true) it will
 message the user with current CPU governors"
   (interactive "p")
-  (let* ((output (cpupower--run "--cpu all frequency-info -p"))
+  (let* ((output (cpupower--run '("--cpu" "all" "frequency-info" "-p")))
          (governors (mapcar (lambda (quoted)
                               (string-replace "\"" "" quoted))
                             (cpupower--parse-find output "governor"))))
     (when print-message
       (message (format "CPU Governors: %s"
-                       (mapconcat 'identity
-                                  (seq-uniq governors 'string-equal)
+                       (mapconcat #'identity
+                                  (seq-uniq governors #'string-equal)
                                   ", "))))
     governors))
 
@@ -242,10 +256,10 @@ message the user with current CPU governors"
   (require 'helm)
   (defun cpupower-helm-set-governor ()
     "Set cpu governor using helm."
-    (interactive) 
+    (interactive)
     (cpupower-set-governor
      (helm :sources (helm-make-source "cpu-governors" 'helm-source-sync
-                      :candidates (cpupower--get-available-governors)) 
+                      :candidates (cpupower--get-available-governors))
            :buffer "*helm set cpu governor*"))))
 
 (provide 'cpupower)



reply via email to

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