summaryrefslogtreecommitdiff
path: root/modules/local-repository.el
diff options
context:
space:
mode:
Diffstat (limited to 'modules/local-repository.el')
-rw-r--r--modules/local-repository.el50
1 files changed, 50 insertions, 0 deletions
diff --git a/modules/local-repository.el b/modules/local-repository.el
new file mode 100644
index 00000000..bb8c2770
--- /dev/null
+++ b/modules/local-repository.el
@@ -0,0 +1,50 @@
+;;; local-repository.el --- local repository functionality -*- lexical-binding: t; -*-
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'elpa-mirror)
+
+;; ------------------------------ Utility Function -----------------------------
+
+
+(defun car-member (value list)
+ "Check if VALUE exists as the car of any cons cell in LIST."
+ (member value (mapcar #'car list)))
+
+;; ------------------------------- Customizations ------------------------------
+
+(defcustom localrepo-repository-id "localrepo"
+ "The name used to identify the local repository internally.
+Used for the package-archive and package-archive-priorities lists.")
+
+(defcustom localrepo-repository-priority 100
+ "The value for the local repository in the package-archive-priority list.
+A higher value means higher priority. If you want your local packages to be
+preferred, this must be a higher number than any other repositories.")
+
+(defcustom localrepo-repository-location (concat user-emacs-directory "/localrepo")
+ "The location of the local repository.
+It's a good idea to keep this with the rest of your configuration files and
+keep them in source control.")
+
+(defun localrepo-update-repository ()
+ "Update the local repository with currently installed packages."
+ (interactive)
+ (elpamr-create-mirror-for-installed localrepo-repository-location t))
+
+(defun localrepo-initialize ()
+"Add the repository to the package archives, then gives it a high priority."
+ (unless (car-member localrepo-repository-id package-archives)
+ (add-to-list 'package-archives
+ (localrepo-repository-id . localrepo-repository-location)))
+
+ (unless (car-member localrepo-repository-id package-archive-priorities)
+ (add-to-list 'package-archive-priorities
+ (localrepo-repository-id . localrepo-repository-priority))))
+
+
+
+(provide 'local-repository)
+;;; local-repository.el ends here.