You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.3 KiB
36 lines
1.3 KiB
;;; pacfiles-utils.el --- common utilities of pacfiles-mode -*- lexical-binding: t; -*-
|
|
|
|
;;; Commentary:
|
|
;; Utility functions used throughout pacfiles-mode
|
|
;;
|
|
;;; Code:
|
|
|
|
(defun pacfiles--calculate-merge-file (file path)
|
|
"File name associated to the merge file tied to FILE located in PATH."
|
|
(concat path (substring (secure-hash 'md5 file) 0 10) ".pacmerge"))
|
|
|
|
(defun pacfiles--add-sudo-maybe (file-path permission)
|
|
"Add \"/sudo::\" to FILE-PATH if the file does not meet the PERMISSION.
|
|
FILE-PATH is a variable pointing to a file name.
|
|
PERMISSION is either \":read\" or \":write\""
|
|
(let ((predicate (cond ((eq permission :read) #'file-readable-p)
|
|
((eq permission :write) #'file-writable-p)
|
|
(t (user-error "Unknown keyword"))))
|
|
(apt-path file-path))
|
|
(unless (funcall predicate apt-path)
|
|
(setq apt-path (concat "/sudo::" apt-path))
|
|
(unless (funcall predicate apt-path)
|
|
(error "Could not %s \"%s\"" (if (eq permission :read) "read" "write") file-path)))
|
|
apt-path))
|
|
|
|
(defun pacfiles--var-to-cons (var)
|
|
"Create a cons of the VAR symbol and the VAR value."
|
|
`(,var . ,(symbol-value var)))
|
|
|
|
(defun pacfiles--cons-to-var (cons)
|
|
"Set the `car' of CONS to the `cdr' of CONS."
|
|
(let ((var (car cons)))
|
|
(set var (cdr cons))))
|
|
|
|
(provide 'pacfiles-utils)
|
|
;;; pacfiles-utils.el ends here
|