diff options
author | Brian Cully <bjc@kublai.com> | 2022-02-19 16:21:24 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-19 16:21:24 -0500 |
commit | 8c5fbc479ebb1f795db08edd89495ab630123c42 (patch) | |
tree | 66fc89bbc243beaae5a6ebd2a8eba67660b55f17 | |
parent | f7c7ef3851079a77c54a8db68dca30e19d62a960 (diff) | |
parent | 6403f4f883fadb147a8c42d9123763913a90a850 (diff) | |
download | tramp-nspawn-8c5fbc479ebb1f795db08edd89495ab630123c42.tar.gz tramp-nspawn-8c5fbc479ebb1f795db08edd89495ab630123c42.zip |
Merge pull request #1 from bjc/next
Pull in version 1.0.
-rw-r--r-- | Makefile | 13 | ||||
-rw-r--r-- | README.org | 14 | ||||
-rw-r--r-- | tramp-nspawn.el (renamed from nspawn-tramp.el) | 87 |
3 files changed, 64 insertions, 50 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3b59df4 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +EMACS?= emacs + +ELCS= nspawn-tramp.elc + +.PHONY: all clean + +all: $(ELCS) + +clean: + rm -f $(ELCS) + +%.elc: %.el + $(EMACS) -Q --batch -f batch-byte-compile $< @@ -1,22 +1,24 @@ * Introduction -=nspawn-tramp= adds support for =systemd-nspawn= containers with Emacs’ +=tramp-nspawn= adds support for =systemd-nspawn= containers with Emacs’ TRAMP system. * Installation -This package is not yet available on the various package sites +** ELPA +This package is available on [[https://elpa.gnu.org/packages/nspawn-tramp.html][GNU ELPA]] and can be installed with +=M-x package-install RET tramp-nspawn RET= from within Emacs itself. ** Direct download Download this repository to some location, then add the following to your Emacs initialization: #+begin_src elisp - (add-to-list 'load-path "/path/to/nspawn-tramp") - (require 'nspawn-tramp) + (add-to-list 'load-path "/path/to/tramp-nspawn") + (require 'tramp-nspawn) #+end_src * Usage -Call ~nspawn-tramp-setup~ to add support: +Call ~tramp-nspawn-setup~ to add support: #+begin_src elisp - (add-hook 'after-init-hook 'nspawn-tramp-setup) + (add-hook 'after-init-hook 'tramp-nspawn-setup) #+end_src diff --git a/nspawn-tramp.el b/tramp-nspawn.el index e523340..286074a 100644 --- a/nspawn-tramp.el +++ b/tramp-nspawn.el @@ -1,13 +1,12 @@ -;;; nspawn-tramp.el -- TRAMP integration for systemd-nspawn containers -*- lexical-binding: t; -*- +;;; tramp-nspawn.el -- Tramp integration for systemd-nspawn containers -*- lexical-binding: t; -*- -;; Copyright © 2021 Free Software Foundation, Inc. +;; Copyright © 2021-2022 Free Software Foundation, Inc. ;; Author: Brian Cully <bjc@kublai.com> ;; Maintainer: Brian Cully <bjc@kublai.com> -;; URL: https://github.com/bjc/nspawn-tramp +;; URL: https://github.com/bjc/tramp-nspawn ;; Keywords: tramp, nspawn, machinectl, systemd, systemd-nspawn -;; Maintainer: Brian Cully <bjc@kublai.com> -;; Version: 0.1 +;; Version: 1.0 ;; Package-Requires: ((emacs "23")) ;;; License: @@ -28,30 +27,30 @@ ;;; Commentary: ;; -;; ‘nspawn-tramp’ allows TRAMP to work with containers provided by +;; ‘tramp-nspawn’ allows Tramp access to environments provided by ;; systemd-nspawn. ;; ;; ## Usage ;; -;; Call ‘nspawn-tramp-setup’ in your Emacs initialization. +;; Call ‘tramp-nspawn-setup’ in your Emacs initialization. ;; -;; (add-hook 'after-init-hook 'nspawn-tramp-setup) +;; (add-hook 'after-init-hook 'tramp-nspawn-setup) ;; ;; Open a file on a running systemd-nspawn container: ;; -;; C-x C-f /nspawn:user@container:/path/to/file +;; C-x C-f /nspawn:USER@CONTAINER:/path/to/file ;; ;; Where: -;; ‘user’ is the user on the container to connect as (optional) -;; ‘container’ is the container to connect to +;; USER is the user on the container to connect as (optional) +;; CONTAINER is the container to connect to ;; ;; ## Privileges ;; ;; systemd-nspawn and its container utilities often require super user -;; access to run, and this package does not do privilege escalation in +;; access to run, and this package does not escalate privileges in ;; order to accomplish that. ;; -;; One way of working around this using TRAMP’s built-in multi-hop +;; One way of working around this using Tramp’s built-in multi-hop ;; facilities with doas or sudo to raise your privileges. ;; ;; Another possibility is using polkit(8) to allow specific users @@ -62,28 +61,28 @@ (require 'tramp) -(defgroup nspawn-tramp nil - "TRAMP integration for systemd-nspawn containers." - :prefix "nspawn-tramp-" +(defgroup tramp-nspawn nil + "Tramp integration for systemd-nspawn containers." + :prefix "tramp-nspawn-" :group 'applications - :link '(url-link :tag "Github" "https://github.com/bjc/nspawn-tramp") - :link '(emacs-commentary-link :tag "Commentary" "nspawn-tramp")) + :link '(url-link :tag "Github" "https://github.com/bjc/tramp-nspawn") + :link '(emacs-commentary-link :tag "Commentary" "tramp-nspawn")) -(defcustom nspawn-tramp-machinectl-path "machinectl" - "Path to machinectl executable." +(defcustom tramp-nspawn-machinectl-program "machinectl" + "Name of the machinectl program." :type 'string - :group 'nspawn-tramp) + :group 'tramp-nspawn) -(defconst nspawn-tramp-method "nspawn" - "TRAMP method name to use to connect to systemd-nspawn containers.") +(defconst tramp-nspawn-method "nspawn" + "Tramp method name to use to connect to systemd-nspawn containers.") -(defun nspawn-tramp--completion-function (&rest _args) +(defun tramp-nspawn--completion-function (&rest _args) "List systemd-nspawn containers available for connection. This function is used by ‘tramp-set-completion-function’, please see its function help for a description of the format." (let* ((raw-list (shell-command-to-string - (concat nspawn-tramp-machinectl-path + (concat tramp-nspawn-machinectl-program " list -q"))) (lines (cdr (split-string raw-list "\n"))) (first-words (mapcar (lambda (line) (car (split-string line))) @@ -92,10 +91,10 @@ see its function help for a description of the format." (mapcar (lambda (m) (list nil m)) machines))) -(defun nspawn-tramp--add-method () - "Add TRAMP method handler for nspawn conainers." - (push `(,nspawn-tramp-method - (tramp-login-program ,nspawn-tramp-machinectl-path) +(defun tramp-nspawn--add-method () + "Add Tramp method handler for nspawn containers." + (push `(,tramp-nspawn-method + (tramp-login-program ,tramp-nspawn-machinectl-program) (tramp-login-args (("shell") ("-q") ("--uid" "%u") @@ -105,22 +104,22 @@ see its function help for a description of the format." (tramp-remote-shell-args ("-i" "-c"))) tramp-methods)) -(defun nspawn-tramp--remove-method () - "Remove TRAMP method handler for nspawn containers." - (setf (alist-get nspawn-tramp-method tramp-methods nil t 'string=) nil)) +(defun tramp-nspawn--remove-method () + "Remove Tramp method handler for nspawn containers." + (setf (alist-get tramp-nspawn-method tramp-methods nil t 'string=) nil)) -(defun nspawn-tramp-unload-function () - "Remove TRAMP method handler and completion functions." - (tramp-set-completion-function nspawn-tramp-method nil) - (nspawn-tramp--remove-method) +(defun tramp-nspawn-unload-function () + "Remove Tramp method handler and completion functions." + (tramp-set-completion-function tramp-nspawn-method nil) + (tramp-nspawn--remove-method) nil) ;;;###autoload -(defun nspawn-tramp-setup () - "Initialize systemd-nspawn support for TRAMP." - (nspawn-tramp--add-method) - (tramp-set-completion-function nspawn-tramp-method - '((nspawn-tramp--completion-function "")))) - -(provide 'nspawn-tramp) -;;; nspawn-tramp.el ends here +(defun tramp-nspawn-setup () + "Initialize systemd-nspawn support for Tramp." + (tramp-nspawn--add-method) + (tramp-set-completion-function tramp-nspawn-method + '((tramp-nspawn--completion-function "")))) + +(provide 'tramp-nspawn) +;;; tramp-nspawn.el ends here |