about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/docker-20180710.743')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-autoloads.el256
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.el478
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.elcbin0 -> 32273 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.el245
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.elcbin0 -> 15362 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.el260
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.elcbin0 -> 16437 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.el106
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.elcbin0 -> 7083 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-pkg.el14
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.el48
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.elcbin0 -> 1171 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.el73
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.elcbin0 -> 2423 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.el121
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.elcbin0 -> 7588 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.el51
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.elcbin0 -> 1480 bytes
18 files changed, 1652 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-autoloads.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-autoloads.el
new file mode 100644
index 000000000000..48aa60651992
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-autoloads.el
@@ -0,0 +1,256 @@
+;;; docker-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "docker-container" "docker-container.el" (23377
+;;;;;;  61612 979207 18000))
+;;; Generated autoloads from docker-container.el
+
+(autoload 'docker-start "docker-container" "\
+Start the container named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-stop "docker-container" "\
+Stop the container named NAME.
+
+TIMEOUT is the number of seconds to wait for the container to stop before killing it.
+
+\(fn NAME &optional TIMEOUT)" t nil)
+
+(autoload 'docker-restart "docker-container" "\
+Restart the container named NAME.
+
+TIMEOUT is the number of seconds to wait for the container to stop before killing it.
+
+\(fn NAME &optional TIMEOUT)" t nil)
+
+(autoload 'docker-pause "docker-container" "\
+Pause the container named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-unpause "docker-container" "\
+Unpause the container named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-rm "docker-container" "\
+Remove the container named NAME.
+
+With prefix argument, sets FORCE to true.
+
+Force the removal even if the container is running when FORCE is set.
+Remove the specified link and not the underlying container when LINK is set.
+Remove the volumes associated with the container when VOLUMES is set.
+
+\(fn NAME &optional FORCE LINK VOLUMES)" t nil)
+
+(autoload 'docker-kill "docker-container" "\
+Kill the container named NAME using SIGNAL.
+
+\(fn NAME &optional SIGNAL)" t nil)
+
+(autoload 'docker-inspect "docker-container" "\
+Inspect the container named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-diff "docker-container" "\
+Diff the container named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-rename "docker-container" "\
+Rename CONTAINER using NAME.
+
+\(fn CONTAINER NAME)" t nil)
+
+(autoload 'docker-logs "docker-container" "\
+Show the logs from container NAME.
+
+If FOLLOW is set, run in `async-shell-command'.
+
+\(fn NAME &optional FOLLOW)" t nil)
+
+(autoload 'docker-container-find-file "docker-container" "\
+Inside CONTAINER open FILE.
+
+\(fn CONTAINER FILE)" t nil)
+
+(autoload 'docker-container-find-directory "docker-container" "\
+Inside CONTAINER open DIRECTORY.
+
+\(fn CONTAINER DIRECTORY)" t nil)
+
+(autoload 'docker-container-shell "docker-container" "\
+Open `shell' in CONTAINER.
+
+\(fn CONTAINER)" t nil)
+
+(autoload 'docker-container-eshell "docker-container" "\
+Open `eshell' in CONTAINER.
+
+\(fn CONTAINER)" t nil)
+
+(autoload 'docker-containers "docker-container" "\
+List docker containers.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "docker-image" "docker-image.el" (23377 61612
+;;;;;;  980588 315000))
+;;; Generated autoloads from docker-image.el
+
+(autoload 'docker-pull "docker-image" "\
+Pull the image named NAME.  If ALL is set, use \"-a\".
+
+\(fn NAME &optional ALL)" t nil)
+
+(autoload 'docker-push "docker-image" "\
+Push the image named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-rmi "docker-image" "\
+Destroy or untag the image named NAME.
+
+Force removal of the image when FORCE is set.
+Do not delete untagged parents when NO-PRUNE is set.
+
+\(fn NAME &optional FORCE NO-PRUNE)" t nil)
+
+(autoload 'docker-tag "docker-image" "\
+Tag IMAGE using NAME.
+
+\(fn IMAGE NAME)" t nil)
+
+(autoload 'docker-images "docker-image" "\
+List docker images.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "docker-machine" "docker-machine.el" (23377
+;;;;;;  61612 976526 978000))
+;;; Generated autoloads from docker-machine.el
+
+(autoload 'docker-machine-config "docker-machine" "\
+Print the connection config for the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-inspect "docker-machine" "\
+Inspect information about the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-ip "docker-machine" "\
+Get the IP address of the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-status "docker-machine" "\
+Get the status of the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-upgrade "docker-machine" "\
+Upgrade the machine NAME to the latest version of Docker.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-kill "docker-machine" "\
+Kill the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-create "docker-machine" "\
+Create a machine NAME using DRIVER.
+
+\(fn NAME DRIVER)" t nil)
+
+(autoload 'docker-machine-start "docker-machine" "\
+Start the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-env "docker-machine" "\
+Parse and set environment variables from \"docker-machine env NAME\" output.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-stop "docker-machine" "\
+Stop the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-restart "docker-machine" "\
+Restart the machine NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-machine-rm "docker-machine" "\
+Destroy or uncommand the machine NAME.  If FORCE is set, use \"--force\".
+
+\(fn NAME &optional FORCE)" t nil)
+
+(autoload 'docker-machines "docker-machine" "\
+List docker machines.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "docker-network" "docker-network.el" (23377
+;;;;;;  61612 983483 625000))
+;;; Generated autoloads from docker-network.el
+
+(autoload 'docker-network-rm "docker-network" "\
+Destroy the network named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-networks "docker-network" "\
+List docker networks.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "docker-volume" "docker-volume.el" (23377 61612
+;;;;;;  972590 516000))
+;;; Generated autoloads from docker-volume.el
+
+(autoload 'docker-volume-rm "docker-volume" "\
+Destroy the volume named NAME.
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-volume-dired "docker-volume" "\
+
+
+\(fn NAME)" t nil)
+
+(autoload 'docker-volumes "docker-volume" "\
+List docker volumes.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads nil nil ("docker-pkg.el" "docker-process.el" "docker-utils.el"
+;;;;;;  "docker.el") (23377 61612 982050 23000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; docker-autoloads.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.el
new file mode 100644
index 000000000000..ceebd82c7a09
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.el
@@ -0,0 +1,478 @@
+;;; docker-container.el --- Emacs interface to docker-container  -*- lexical-binding: t -*-
+
+;; Author: Philippe Vaucher <philippe.vaucher@gmail.com>
+;;         Yuki Inoue <inouetakahiroki@gmail.com>
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'docker-process)
+(require 'docker-utils)
+(require 'magit-popup)
+(require 'tablist)
+(require 'json)
+
+(defcustom docker-container-show-all t
+  "Show non-running containers."
+  :group 'docker
+  :type 'boolean)
+
+(defcustom docker-container-shell-file-name shell-file-name
+  "Shell to use when entering containers.
+For more information see the variable `shell-file-name'."
+  :group 'docker
+  :type 'string)
+
+(defcustom docker-container-default-sort-key '("Image" . nil)
+  "Sort key for docker containers.
+
+This should be a cons cell (NAME . FLIP) where
+NAME is a string matching one of the column names
+and FLIP is a boolean to specify the sort order."
+  :group 'docker
+  :type '(cons (choice (const "Id")
+                       (const "Image")
+                       (const "Command")
+                       (const "Created")
+                       (const "Status")
+                       (const "Ports")
+                       (const "Names"))
+               (choice (const :tag "Ascending" nil)
+                       (const :tag "Descending" t))))
+
+(defun docker-container-parse (line)
+  "Convert a LINE from \"docker ps\" to a `tabulated-list-entries' entry."
+  (let (data)
+    (condition-case nil
+        (setq data (json-read-from-string line))
+      (json-readtable-error
+       (error "Could not read following string as json:\n%s" line)))
+    (list (aref data 6) data)))
+
+(defun docker-container-entries ()
+  "Return the docker containers data for `tabulated-list-entries'."
+  (let* ((fmt "[{{json .ID}},{{json .Image}},{{json .Command}},{{json .RunningFor}},{{json .Status}},{{json .Ports}},{{json .Names}}]")
+         (data (docker-run "ps" (format "--format=\"%s\"" fmt) (when docker-container-show-all "-a ")))
+         (lines (s-split "\n" data t)))
+    (-map #'docker-container-parse lines)))
+
+(defun docker-container-refresh ()
+  "Refresh the containers list."
+  (setq tabulated-list-entries (docker-container-entries)))
+
+(defun docker-container-read-name ()
+  "Read an container name."
+  (completing-read "Container: " (-map #'car (docker-container-entries))))
+
+;;;###autoload
+(defun docker-start (name)
+  "Start the container named NAME."
+  (interactive (list (docker-container-read-name)))
+  (docker-run "start" name))
+
+;;;###autoload
+(defun docker-stop (name &optional timeout)
+  "Stop the container named NAME.
+
+TIMEOUT is the number of seconds to wait for the container to stop before killing it."
+  (interactive (list (docker-container-read-name) current-prefix-arg))
+  (docker-run "stop" (when timeout (format "-t %d" timeout)) name))
+
+;;;###autoload
+(defun docker-restart (name &optional timeout)
+  "Restart the container named NAME.
+
+TIMEOUT is the number of seconds to wait for the container to stop before killing it."
+  (interactive (list (docker-container-read-name) current-prefix-arg))
+  (docker-run "restart" (when timeout (format "-t %d" timeout)) name))
+
+;;;###autoload
+(defun docker-pause (name)
+  "Pause the container named NAME."
+  (interactive (list (docker-container-read-name)))
+  (docker-run "pause" name))
+
+;;;###autoload
+(defun docker-unpause (name)
+  "Unpause the container named NAME."
+  (interactive (list (docker-container-read-name)))
+  (docker-run "unpause" name))
+
+;;;###autoload
+(defun docker-rm (name &optional force link volumes)
+  "Remove the container named NAME.
+
+With prefix argument, sets FORCE to true.
+
+Force the removal even if the container is running when FORCE is set.
+Remove the specified link and not the underlying container when LINK is set.
+Remove the volumes associated with the container when VOLUMES is set."
+  (interactive (list (docker-container-read-name) current-prefix-arg))
+  (docker-run "rm" (when force "-f") (when link "-l") (when volumes "-v") name))
+
+;;;###autoload
+(defun docker-kill (name &optional signal)
+  "Kill the container named NAME using SIGNAL."
+  (interactive (list (docker-container-read-name)))
+  (docker-run "kill" (when signal (format "-s %s" signal)) name))
+
+;;;###autoload
+(defun docker-inspect (name)
+  "Inspect the container named NAME."
+  (interactive (list (docker-container-read-name)))
+  (docker-utils-with-buffer (format "inspect %s" name)
+    (insert (docker-run "inspect" name))
+    (json-mode)))
+
+;;;###autoload
+(defun docker-diff (name)
+  "Diff the container named NAME."
+  (interactive (list (docker-container-read-name)))
+  (docker-utils-with-buffer (format "diff %s" name)
+   (insert (docker-run "diff" name))))
+
+;;;###autoload
+(defun docker-rename (container name)
+  "Rename CONTAINER using NAME."
+  (interactive (list (docker-container-read-name) (read-string "Name: ")))
+  (docker-run "rename" container name))
+
+;;;###autoload
+(defun docker-logs (name &optional follow)
+  "Show the logs from container NAME.
+
+If FOLLOW is set, run in `async-shell-command'."
+  (interactive (list (docker-container-read-name)))
+  (if follow
+      (async-shell-command (format "%s logs -f %s" docker-command name) (format "* docker logs %s *" name))
+    (docker-utils-with-buffer (format "logs %s" name)
+      (insert (docker-run "logs" name)))))
+
+;;;###autoload
+(defun docker-container-find-file (container file)
+  "Inside CONTAINER open FILE."
+  (interactive
+   (let* ((container-name (docker-container-read-name))
+          (tramp-filename (read-file-name "File: " (format "/docker:%s:/" container-name))))
+     (with-parsed-tramp-file-name tramp-filename nil
+       (list host localname))))
+  (find-file (format "/docker:%s:%s" container file)))
+
+;;;###autoload
+(defun docker-container-find-directory (container directory)
+  "Inside CONTAINER open DIRECTORY."
+  (interactive
+   (let* ((container-name (docker-container-read-name))
+          (tramp-filename (read-directory-name "Directory: " (format "/docker:%s:/" container-name))))
+     (with-parsed-tramp-file-name tramp-filename nil
+       (list host localname))))
+  (dired (format "/docker:%s:%s" container directory)))
+
+(defalias 'docker-container-dired 'docker-container-find-directory)
+
+;;;###autoload
+(defun docker-container-shell (container)
+  "Open `shell' in CONTAINER."
+  (interactive (list (docker-container-read-name)))
+  (let* ((shell-file-name docker-container-shell-file-name)
+         (container-address (format "docker:%s:/" container))
+         (file-prefix (if (file-remote-p default-directory)
+                          (with-parsed-tramp-file-name default-directory nil
+                            (format "/%s:%s|" method host))
+                        "/"))
+         (default-directory (format "%s%s" file-prefix container-address)))
+    (shell (format "*shell %s*" default-directory))))
+
+;;;###autoload
+(defun docker-container-eshell (container)
+  "Open `eshell' in CONTAINER."
+  (interactive (list (docker-container-read-name)))
+  (let* ((container-address (format "docker:%s:/" container))
+         (file-prefix (if (file-remote-p default-directory)
+                          (with-parsed-tramp-file-name default-directory nil
+                            (format "/%s:%s|" method host))
+                        "/"))
+         (default-directory (format "%s%s" file-prefix container-address))
+         (eshell-buffer-name (format "*eshell %s*" default-directory)))
+    (eshell)))
+
+(defun docker-container-start-selection ()
+  "Run `docker-start' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "start" (docker-container-start-arguments) it))
+  (tablist-revert))
+
+(defun docker-container-stop-selection ()
+  "Run `docker-stop' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "stop" (docker-container-stop-arguments) it))
+  (tablist-revert))
+
+(defun docker-container-restart-selection ()
+  "Run `docker-restart' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "restart" (docker-container-restart-arguments) it))
+  (tablist-revert))
+
+(defun docker-container-pause-selection ()
+  "Run `docker-pause' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "pause" (docker-container-pause-arguments) it))
+  (tablist-revert))
+
+(defun docker-container-unpause-selection ()
+  "Run `docker-unpause' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "unpause" (docker-container-unpause-arguments) it))
+  (tablist-revert))
+
+(defun docker-container-rm-selection ()
+  "Run `docker-rm' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "rm" (docker-container-rm-arguments) it))
+  (tablist-revert))
+
+(defun docker-container-kill-selection ()
+  "Run `docker-kill' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "kill" (docker-container-kill-arguments) it))
+  (tablist-revert))
+
+(defun docker-container-inspect-selection ()
+  "Run `docker-inspect' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-utils-with-buffer (format "inspect %s" it)
+      (insert (docker-run "inspect" (docker-container-inspect-arguments) it))
+      (json-mode))))
+
+(defun docker-container-diff-selection ()
+  "Run `docker-diff' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-utils-with-buffer (format "diff %s" it)
+      (insert (docker-run "diff" (docker-container-diff-arguments) it)))))
+
+(defun docker-container-rename-selection ()
+  "Rename containers."
+  (interactive)
+  (docker-utils-select-if-empty)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-rename it (read-string (format "New name for %s: " it))))
+  (tablist-revert))
+
+(defun docker-container-logs-selection ()
+  "Run \"docker logs\" on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (async-shell-command
+     (format "%s logs %s %s" docker-command (s-join " " (docker-container-logs-arguments)) it)
+     (format "* docker logs %s *" it))))
+
+(defun docker-container-find-file-selection (path)
+  "Run `docker-container-find-file' on the containers selection."
+  (interactive "sPath: ")
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-container-find-file it path)))
+
+(defun docker-container-shell-selection ()
+  "Run `docker-container-shell' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-container-shell it)))
+
+(defun docker-container-eshell-selection ()
+  "Run `docker-container-eshell' on the containers selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-container-eshell it)))
+
+(defun docker-container-cp-from-selection (container-path host-path)
+  "Run \"docker cp\" from CONTAINER-PATH to HOST-PATH for selected container."
+  (interactive "sContainer path: \nFHost path: ")
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "cp" (concat it ":" container-path) host-path)))
+
+(defun docker-container-cp-to-selection (host-path container-path)
+  "Run \"docker cp\" from HOST-PATH to CONTAINER-PATH for selected containers."
+  (interactive "fHost path: \nsContainer path: ")
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "cp" host-path (concat it ":" container-path))))
+
+(magit-define-popup docker-container-start-popup
+  "Popup for starting containers."
+  'docker-container-popups
+  :man-page "docker-start"
+  :actions  '((?S "Start" docker-container-start-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-stop-popup
+  "Popup for stoping containers."
+  'docker-container-popups
+  :man-page "docker-stop"
+  :options '((?t "Timeout" "-t "))
+  :actions '((?O "Stop" docker-container-stop-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-restart-popup
+  "Popup for restarting containers."
+  'docker-container-popups
+  :man-page "docker-restart"
+  :options '((?t "Timeout" "-t "))
+  :actions '((?R "Restart" docker-container-restart-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-pause-popup
+  "Popup for pauseing containers."
+  'docker-container-popups
+  :man-page "docker-pause"
+  :actions  '((?P "Pause" docker-container-pause-selection)
+              (?U "Unpause" docker-container-unpause-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-rm-popup
+  "Popup for removing containers."
+  'docker-container-popups
+  :man-page "docker-rm"
+  :switches '((?f "Force" "-f")
+              (?v "Volumes" "-v"))
+  :actions  '((?D "Remove" docker-container-rm-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-kill-popup
+  "Popup for kill signaling containers"
+  'docker-container-popups
+  :man-page "docker-kill"
+  :options  '((?s "Signal" "-s "))
+  :actions  '((?K "Kill" docker-container-kill-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-inspect-popup
+  "Popup for inspecting containers."
+  'docker-container-popups
+  :man-page "docker-inspect"
+  :actions  '((?I "Inspect" docker-container-inspect-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-diff-popup
+  "Popup for showing containers diffs."
+  'docker-container-popups
+  :man-page "docker-diff"
+  :actions  '((?d "Diff" docker-container-diff-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-logs-popup
+  "Popup for showing containers logs."
+  'docker-container-popups
+  :man-page "docker-logs"
+  :switches '((?f "Follow" "-f"))
+  :actions  '((?L "Logs" docker-container-logs-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-find-file-popup
+  "Popup for opening containers files."
+  'docker-container-popups
+  :actions  '((?f "Open file" docker-container-find-file-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-shell-popup
+  "Popup for doing M-x `shell'/`eshell' to containers."
+  'docker-container-popups
+  :actions  '((?b "Shell" docker-container-shell-selection)
+              (?e "Eshell" docker-container-eshell-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-cp-popup
+  "Popup for copying files from/to containers."
+  'docker-container-popups
+  :man-page "docker-cp"
+  :actions  '((?F "Copy From" docker-container-cp-from-selection)
+              (?T "Copy To" docker-container-cp-to-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-container-help-popup
+  "Help popup for docker containers."
+  :actions '("Docker containers help"
+             (?C "Copy"       docker-container-cp-popup)
+             (?D "Remove"     docker-container-rm-popup)
+             (?I "Inspect"    docker-container-inspect-popup)
+             (?K "Kill"       docker-container-kill-popup)
+             (?L "Logs"       docker-container-logs-popup)
+             (?O "Stop"       docker-container-stop-popup)
+             (?P "Pause"      docker-container-pause-popup)
+             (?R "Restart"    docker-container-restart-popup)
+             (?S "Start"      docker-container-start-popup)
+             (?b "Shell"      docker-container-shell-popup)
+             (?d "Diff"       docker-container-diff-popup)
+             (?f "Find file"  docker-container-find-file-popup)
+             (?r "Rename"     docker-container-rename-selection)
+             "Switch to other parts"
+             (?i "Images"     docker-images)
+             (?m "Machines"   docker-machines)
+             (?n "Networks"   docker-networks)
+             (?v "Volumes"    docker-volumes)))
+
+(defvar docker-container-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "?" 'docker-container-help-popup)
+    (define-key map "C" 'docker-container-cp-popup)
+    (define-key map "D" 'docker-container-rm-popup)
+    (define-key map "I" 'docker-container-inspect-popup)
+    (define-key map "K" 'docker-container-kill-popup)
+    (define-key map "L" 'docker-container-logs-popup)
+    (define-key map "O" 'docker-container-stop-popup)
+    (define-key map "P" 'docker-container-pause-popup)
+    (define-key map "R" 'docker-container-restart-popup)
+    (define-key map "S" 'docker-container-start-popup)
+    (define-key map "b" 'docker-container-shell-popup)
+    (define-key map "d" 'docker-container-diff-popup)
+    (define-key map "f" 'docker-container-find-file-popup)
+    (define-key map "r" 'docker-container-rename-selection)
+    map)
+  "Keymap for `docker-container-mode'.")
+
+;;;###autoload
+(defun docker-containers ()
+  "List docker containers."
+  (interactive)
+  (docker-utils-pop-to-buffer "*docker-containers*")
+  (docker-container-mode)
+  (tablist-revert))
+
+(define-derived-mode docker-container-mode tabulated-list-mode "Containers Menu"
+  "Major mode for handling a list of docker containers."
+  (setq tabulated-list-format [("Id" 16 t)("Image" 15 t)("Command" 30 t)("Created" 15 t)("Status" 20 t)("Ports" 10 t)("Names" 10 t)])
+  (setq tabulated-list-padding 2)
+  (setq tabulated-list-sort-key docker-container-default-sort-key)
+  (add-hook 'tabulated-list-revert-hook 'docker-container-refresh nil t)
+  (tabulated-list-init-header)
+  (tablist-minor-mode))
+
+(provide 'docker-container)
+
+;;; docker-container.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.elc
new file mode 100644
index 000000000000..c7351abce96e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-container.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.el
new file mode 100644
index 000000000000..a9e3420bdf38
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.el
@@ -0,0 +1,245 @@
+;;; docker-image.el --- Emacs interface to docker-image  -*- lexical-binding: t -*-
+
+;; Author: Philippe Vaucher <philippe.vaucher@gmail.com>
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'docker-process)
+(require 'docker-utils)
+(require 'magit-popup)
+(require 'tablist)
+
+(defcustom docker-image-default-sort-key '("Repository" . nil)
+  "Sort key for docker images.
+
+This should be a cons cell (NAME . FLIP) where
+NAME is a string matching one of the column names
+and FLIP is a boolean to specify the sort order."
+  :group 'docker
+  :type '(cons (choice (const "Repository")
+                       (const "Tag")
+                       (const "Id")
+                       (const "Created")
+                       (const "Size"))
+               (choice (const :tag "Ascending" nil)
+                       (const :tag "Descending" t))))
+
+(defun docker-image-parse (line)
+  "Convert a LINE from \"docker images\" to a `tabulated-list-entries' entry."
+  (let* ((data (s-split "\t" line))
+         (name (format "%s:%s" (nth 0 data) (nth 1 data))))
+    (list
+     (if (s-contains? "<none>" name) (nth 2 data) name)
+     (apply #'vector data))))
+
+(defun docker-image-entries ()
+  "Return the docker images data for `tabulated-list-entries'."
+  (let* ((fmt "{{.Repository}}\\t{{.Tag}}\\t{{.ID}}\\t{{.CreatedSince}}\\t{{.Size}}")
+         (data (docker-run "images" (format "--format=\"%s\"" fmt)))
+         (lines (s-split "\n" data t)))
+    (-map #'docker-image-parse lines)))
+
+(defun docker-image-refresh ()
+  "Refresh the images list."
+  (setq tabulated-list-entries (docker-image-entries)))
+
+(defun docker-image-read-name ()
+  "Read an image name."
+  (completing-read "Image: " (-map #'car (docker-image-entries))))
+
+;;;###autoload
+(defun docker-pull (name &optional all)
+  "Pull the image named NAME.  If ALL is set, use \"-a\"."
+  (interactive (list (docker-image-read-name) current-prefix-arg))
+  (docker-run "pull" (when all "-a ") name))
+
+;;;###autoload
+(defun docker-push (name)
+  "Push the image named NAME."
+  (interactive (list (docker-image-read-name)))
+  (docker-run "push" name))
+
+;;;###autoload
+(defun docker-rmi (name &optional force no-prune)
+  "Destroy or untag the image named NAME.
+
+Force removal of the image when FORCE is set.
+Do not delete untagged parents when NO-PRUNE is set."
+  (interactive (list (docker-image-read-name) current-prefix-arg))
+  (docker-run "rmi" (when force "-f") (when no-prune "--no-prune") name))
+
+;;;###autoload
+(defun docker-tag (image name)
+  "Tag IMAGE using NAME."
+  (interactive (list (docker-image-read-name) (read-string "Name: ")))
+  (docker-run "tag" image name))
+
+(defun docker-image-rm-selection ()
+  "Run \"docker rmi\" on the images selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "rmi" (docker-image-rm-arguments) it))
+  (tablist-revert))
+
+(defun docker-image-pull-selection ()
+  "Run \"docker pull\" on the images selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "pull" (docker-image-pull-arguments) it))
+  (tablist-revert))
+
+(defun docker-image-push-selection ()
+  "Run \"docker push\" on the images selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "push" (docker-image-push-arguments) it)))
+
+(defun docker-image-run-selection (command)
+  "Run \"docker run\" on the images selection."
+  (interactive "sCommand: ")
+  (let ((default-directory (if (and docker-run-as-root
+                                    (not (file-remote-p default-directory)))
+                               "/sudo::"
+                             default-directory)))
+    (--each (docker-utils-get-marked-items-ids)
+      (async-shell-command
+       (format "%s run %s %s %s" docker-command (s-join " " (docker-image-run-arguments)) it command)
+       (format "*run %s*" it)))))
+
+(defun docker-image-inspect-selection ()
+  "Run \"docker inspect\" on the images selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-utils-with-buffer (format "inspect %s" it)
+      (insert (docker-run "inspect" (docker-image-inspect-arguments) it))
+      (json-mode))))
+
+(defun docker-image-tag-selection ()
+  "Tag images."
+  (interactive)
+  (docker-utils-select-if-empty)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-tag it (read-string (format "Tag for %s: " it))))
+  (tablist-revert))
+
+(magit-define-popup docker-image-rm-popup
+  "Popup for removing images."
+  'docker-image-popups
+  :man-page "docker-rmi"
+  :switches '((?f "Force" "-f")
+              (?n "Don't prune" "--no-prune"))
+  :actions  '((?D "Remove" docker-image-rm-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-image-pull-popup
+  "Popup for pulling images."
+  'docker-image-popups
+  :man-page "docker-pull"
+  :switches '((?a "All" "-a"))
+  :actions  '((?F "Pull" docker-image-pull-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-image-push-popup
+  "Popup for pushing images."
+  'docker-image-popups
+  :man-page "docker-push"
+  :actions  '((?P "Push" docker-image-push-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-image-inspect-popup
+  "Popup for inspecting images."
+  'docker-image-popups
+  :man-page "docker-inspect"
+  :actions  '((?I "Inspect" docker-image-inspect-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-image-run-popup
+  "Popup for running images."
+  'docker-image-popups
+  :man-page "docker-run"
+  :switches '((?d "Daemonize" "-d")
+              (?i "Interactive" "-i")
+              (?t "TTY" "-t")
+              (?r "Remove" "--rm")
+              (?p "Privileged" "--privileged")
+              (?o "Read only" "--read-only")
+              (?T "Synchronize time" "-v /etc/localtime:/etc/localtime:ro")
+              (?W "Web ports" "-p 80:80 -p 443:443 -p 8080:8080")
+              (?D "With display" "-v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY"))
+  :options  '((?v "volume" "-v ")
+              (?m "name" "--name ")
+              (?e "environment" "-e ")
+              (?p "port" "-p ")
+              (?w "workdir" "-w ")
+              (?u "user" "-u ")
+              (?n "entrypoint" "--entrypoint "))
+  :actions  '((?R "Run images" docker-image-run-selection))
+  :default-arguments '("-i" "-t" "--rm")
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-image-help-popup
+  "Help popup for docker images."
+  :actions '("Docker images help"
+             (?D "Remove"  docker-image-rm-popup)
+             (?F "Pull"    docker-image-pull-popup)
+             (?I "Inspect" docker-image-inspect-popup)
+             (?P "Push"    docker-image-push-popup)
+             (?R "Run"     docker-image-run-popup)
+             (?T "Tag"     docker-image-tag-selection)
+             "Switch to other parts"
+             (?c "Containers" docker-containers)
+             (?m "Machines"   docker-machines)
+             (?n "Networks"   docker-networks)
+             (?v "Volumes"    docker-volumes)))
+
+(defvar docker-image-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "?" 'docker-image-help-popup)
+    (define-key map "D" 'docker-image-rm-popup)
+    (define-key map "F" 'docker-image-pull-popup)
+    (define-key map "I" 'docker-image-inspect-popup)
+    (define-key map "P" 'docker-image-push-popup)
+    (define-key map "R" 'docker-image-run-popup)
+    (define-key map "T" 'docker-image-tag-selection)
+    map)
+  "Keymap for `docker-image-mode'.")
+
+;;;###autoload
+(defun docker-images ()
+  "List docker images."
+  (interactive)
+  (docker-utils-pop-to-buffer "*docker-images*")
+  (docker-image-mode)
+  (tablist-revert))
+
+(define-derived-mode docker-image-mode tabulated-list-mode "Images Menu"
+  "Major mode for handling a list of docker images."
+  (setq tabulated-list-format [("Repository" 30 t)("Tag" 20 t)("Id" 16 t)("Created" 25 t)("Size" 10 t)])
+  (setq tabulated-list-padding 2)
+  (setq tabulated-list-sort-key docker-image-default-sort-key)
+  (add-hook 'tabulated-list-revert-hook 'docker-image-refresh nil t)
+  (tabulated-list-init-header)
+  (tablist-minor-mode))
+
+(provide 'docker-image)
+
+;;; docker-image.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.elc
new file mode 100644
index 000000000000..e3ce5f96cc44
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-image.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.el
new file mode 100644
index 000000000000..cf72812aea50
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.el
@@ -0,0 +1,260 @@
+;;; docker-machine.el --- Emacs interface to docker-machine  -*- lexical-binding: t -*-
+
+;; Author: Ben Swift <ben@benswift.me>
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'docker-process)
+(require 'docker-utils)
+(require 'magit-popup)
+(require 'tablist)
+
+(defun docker-machine-parse (line)
+  "Convert a LINE from \"docker machine ls\" to a `tabulated-list-entries' entry."
+  (let ((data (s-split "\t" line)))
+    (list (car data) (apply #'vector data))))
+
+(defun docker-machine-entries ()
+  "Return the docker machines data for `tabulated-list-entries'."
+  (let* ((fmt "{{.Name}}\\t{{.Active}}\\t{{.DriverName}}\\t{{.State}}\\t{{.URL}}\\t{{.Swarm}}\\t{{.DockerVersion}}\\t{{.Error}}")
+         (data (shell-command-to-string (format "docker-machine ls %s" (format "--format=\"%s\"" fmt))))
+         (lines (s-split "\n" data t)))
+    (-map #'docker-machine-parse lines)))
+
+(defun docker-machine-refresh ()
+  "Refresh the machines list."
+  (setq tabulated-list-entries (docker-machine-entries)))
+
+(defun docker-machine-read-name ()
+  "Read a machine name."
+  (completing-read "Machine: " (-map #'car (docker-machine-entries))))
+
+(defun docker-machine-run (action &rest args)
+  "Execute \"docker-machine ACTION\" passing arguments ARGS."
+  (let ((command (format "docker-machine %s %s" action (s-join " " (-non-nil args)))))
+    (message command)
+    (shell-command-to-string command)))
+
+;;;###autoload
+(defun docker-machine-config (name)
+  "Print the connection config for the machine NAME."
+  (interactive (list (docker-machine-read-name)))
+  (docker-machine-run "config" name))
+
+;;;###autoload
+(defun docker-machine-inspect (name)
+  "Inspect information about the machine NAME."
+  (interactive (list (docker-machine-read-name)))
+  (docker-machine-run "inspect" name))
+
+;;;###autoload
+(defun docker-machine-ip (name)
+  "Get the IP address of the machine NAME."
+  (interactive (list (docker-machine-read-name)))
+  (docker-machine-run "ip" name))
+
+;;;###autoload
+(defun docker-machine-status (name)
+  "Get the status of the machine NAME."
+  (interactive (list (docker-machine-read-name)))
+  (docker-machine-run "status" name))
+
+;;;###autoload
+(defun docker-machine-upgrade (name)
+  "Upgrade the machine NAME to the latest version of Docker."
+  (interactive (list (docker-machine-read-name)))
+  (docker-machine-run "upgrade" name))
+
+;;;###autoload
+(defun docker-machine-kill (name)
+  "Kill the machine NAME."
+  (interactive (list (docker-machine-read-name)))
+  (docker-machine-run "kill" name))
+
+;;;###autoload
+(defun docker-machine-create (name driver)
+  "Create a machine NAME using DRIVER."
+  (interactive "sName: \nsDriver: ")
+  (docker-machine-run "create" name "-d" driver))
+
+;;;###autoload
+(defun docker-machine-start (name)
+  "Start the machine NAME."
+  (interactive (list (docker-machine-read-name)))
+  (docker-machine-run "start" name))
+
+(defun docker-machine-env-export (line)
+  "Export the env for LINE."
+  (let ((index (s-index-of "=" line)))
+    (unless index
+      (error (format "Cannot find separator in %s" line)))
+    (setenv (substring line (length "export ") index) (substring line (+ 2 index) -1))))
+
+;;;###autoload
+(defun docker-machine-env (name)
+  "Parse and set environment variables from \"docker-machine env NAME\" output."
+  (interactive (list (docker-machine-read-name)))
+  (--each-while
+      (s-lines (docker-machine-run "env" name))
+      (s-prefix? "export" it)
+    (docker-machine-env-export it)))
+
+;;;###autoload
+(defun docker-machine-stop (name)
+  "Stop the machine NAME."
+  (interactive (list (docker-machine-read-name) current-prefix-arg))
+  (docker-machine-run "stop" name))
+
+;;;###autoload
+(defun docker-machine-restart (name)
+  "Restart the machine NAME."
+  (interactive (list (docker-machine-read-name) current-prefix-arg))
+  (docker-machine-run "restart" name))
+
+;;;###autoload
+(defun docker-machine-rm (name &optional force)
+  "Destroy or uncommand the machine NAME.  If FORCE is set, use \"--force\"."
+  (interactive (list (docker-machine-read-name) current-prefix-arg))
+  (docker-machine-run "rm" (when force "--force") name))
+
+(defun docker-machine-start-selection ()
+  "Run `docker-machine-start' on the machines selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-machine-run "start" (docker-machine-start-arguments)))
+  (tablist-revert))
+
+(defun docker-machine-stop-selection ()
+  "Run `docker-machine-stop' on the machines selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-machine-run "stop" (docker-machine-stop-arguments)))
+  (tablist-revert))
+
+(defun docker-machine-restart-selection ()
+  "Run `docker-machine-restart' on the machines selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-machine-run "restart" (docker-machine-restart-arguments)))
+  (tablist-revert))
+
+(defun docker-machine-rm-selection ()
+  "Run `docker-machine-rm' on the machines selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-machine-run "rm" (docker-machine-rm-arguments)))
+  (tablist-revert))
+
+(defun docker-machine-env-selection ()
+  "Run \"docker-machine env\" on selected machine."
+  (interactive)
+  (let ((marked (docker-utils-get-marked-items-ids)))
+    (when (/= (length marked) 1)
+      (error "Can only set environment vars for one machine at a time"))
+    (docker-machine-env (car marked))
+    (tablist-revert)))
+
+(magit-define-popup docker-machine-start-popup
+  "Popup for starting machines."
+  'docker-machine-popups
+  :man-page "docker-machine-start"
+  :actions  '((?S "Start" docker-machine-start-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-machine-env-popup
+  "Popup for setting up environment variables."
+  'docker-machine-popups
+  :man-page "docker-machine-env"
+  :actions '((?E "Env" docker-machine-env-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-machine-stop-popup
+  "Popup for stoping machines."
+  'docker-machine-popups
+  :man-page "docker-machine-stop"
+  :actions '((?O "Stop" docker-machine-stop-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-machine-restart-popup
+  "Popup for restarting machines."
+  'docker-machine-popups
+  :man-page "docker-machine-restart"
+  :actions '((?R "Restart" docker-machine-restart-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-machine-rm-popup
+  "Popup for removing machines."
+  'docker-machine-popups
+  :man-page "docker-machine-rm"
+  :switches '((?y "Automatic yes" "-y")
+              (?f "Force" "-f"))
+  :actions  '((?D "Remove" docker-machine-rm-selection))
+  :default-arguments '("-y")
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-machine-help-popup
+  "Help popup for docker machine."
+  :actions '("Docker machines help"
+             (?C "Create"     docker-machine-create)
+             (?D "Remove"     docker-machine-rm-popup)
+             (?E "Env"        docker-machine-env-popup)
+             (?O "Stop"       docker-machine-stop-popup)
+             (?R "Restart"    docker-machine-restart-popup)
+             (?S "Start"      docker-machine-start-popup)
+             "Switch to other parts"
+             (?c "Containers" docker-containers)
+             (?i "Images"     docker-images)
+             (?n "Networks"   docker-networks)
+             (?v "Volumes"    docker-volumes)))
+
+(defvar docker-machine-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "?" 'docker-machine-help-popup)
+    (define-key map "C" 'docker-machine-create)
+    (define-key map "D" 'docker-machine-rm-popup)
+    (define-key map "E" 'docker-machine-env-popup)
+    (define-key map "O" 'docker-machine-stop-popup)
+    (define-key map "R" 'docker-machine-restart-popup)
+    (define-key map "S" 'docker-machine-start-popup)
+    map)
+  "Keymap for `docker-machine-mode'.")
+
+;;;###autoload
+(defun docker-machines ()
+  "List docker machines."
+  (interactive)
+  (docker-utils-pop-to-buffer "*docker-machines*")
+  (docker-machine-mode)
+  (tablist-revert))
+
+(define-derived-mode docker-machine-mode tabulated-list-mode "Machines Menu"
+  "Major mode for handling a list of docker machines."
+  (setq tabulated-list-format [("Name" 16 t)("Active" 7 t)("Driver" 12 t)("State" 12 t)("URL" 30 t)("Swarm" 10 t)("Docker" 10 t)("Errors" 10 t)])
+  (setq tabulated-list-padding 2)
+  (setq tabulated-list-sort-key (cons "Name" nil))
+  (add-hook 'tabulated-list-revert-hook 'docker-machine-refresh nil t)
+  (tabulated-list-init-header)
+  (tablist-minor-mode))
+
+(provide 'docker-machine)
+
+;;; docker-machine.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.elc
new file mode 100644
index 000000000000..c3b2b1e4ed22
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-machine.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.el
new file mode 100644
index 000000000000..78cad5529170
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.el
@@ -0,0 +1,106 @@
+;;; docker-network.el --- Emacs interface to docker-network  -*- lexical-binding: t -*-
+
+;; Author: Philippe Vaucher <philippe.vaucher@gmail.com>
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'docker-process)
+(require 'docker-utils)
+(require 'magit-popup)
+(require 'tablist)
+
+(defun docker-network-parse (line)
+  "Convert a LINE from \"docker network ls\" to a `tabulated-list-entries' entry."
+  (let ((data (s-split " \\{3,\\}" line t)))
+    (list (nth 1 data) (apply #'vector data))))
+
+(defun docker-network-entries ()
+  "Return the docker networks data for `tabulated-list-entries'."
+  (let* ((data (docker-run "network" "ls"))
+         (lines (cdr (s-split "\n" data t))))
+    (-map #'docker-network-parse lines)))
+
+(defun docker-network-refresh ()
+  "Refresh the networks list."
+  (setq tabulated-list-entries (docker-network-entries)))
+
+(defun docker-network-read-name ()
+  "Read a network name."
+  (completing-read "Network: " (-map #'car (docker-network-entries))))
+
+;;;###autoload
+(defun docker-network-rm (name)
+  "Destroy the network named NAME."
+  (interactive (list (docker-network-read-name)))
+  (docker-run "network rm" name))
+
+(defun docker-network-rm-selection ()
+  "Run \"docker network rm\" on the selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "network rm" it))
+  (tablist-revert))
+
+(magit-define-popup docker-network-rm-popup
+  "Popup for removing networks."
+  'docker-network-popups
+  :man-page "docker-network-rm"
+  :actions  '((?D "Remove" docker-network-rm-selection))
+  :setup-function #'docker-utils-popup-setup)
+
+(magit-define-popup docker-network-help-popup
+  "Help popup for docker networks."
+  :actions '("Docker networks help"
+             (?D "Remove"     docker-network-rm-popup)
+             "Switch to other parts"
+             (?c "Containers" docker-containers)
+             (?i "Images"     docker-images)
+             (?m "Machines"   docker-machines)
+             (?v "Volumes"    docker-volumes)))
+
+(defvar docker-network-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "?" 'docker-network-help-popup)
+    (define-key map "D" 'docker-network-rm-popup)
+    map)
+  "Keymap for `docker-network-mode'.")
+
+;;;###autoload
+(defun docker-networks ()
+  "List docker networks."
+  (interactive)
+  (docker-utils-pop-to-buffer "*docker-networks*")
+  (docker-network-mode)
+  (tablist-revert))
+
+(define-derived-mode docker-network-mode tabulated-list-mode "Networks Menu"
+  "Major mode for handling a list of docker networks."
+  (setq tabulated-list-format [("Network ID" 20 t)("Name" 50 t)("Driver" 10 t)])
+  (setq tabulated-list-padding 2)
+  (setq tabulated-list-sort-key (cons "Name" nil))
+  (add-hook 'tabulated-list-revert-hook 'docker-network-refresh nil t)
+  (tabulated-list-init-header)
+  (tablist-minor-mode))
+
+(provide 'docker-network)
+
+;;; docker-network.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.elc
new file mode 100644
index 000000000000..6686fec7d502
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-network.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-pkg.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-pkg.el
new file mode 100644
index 000000000000..67b3013a5d01
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-pkg.el
@@ -0,0 +1,14 @@
+(define-package "docker" "20180710.743" "Emacs interface to Docker"
+  '((emacs "24.5")
+    (dash "2.14.1")
+    (docker-tramp "0.1")
+    (magit-popup "2.12.3")
+    (s "1.12.0")
+    (tablist "0.70")
+    (json-mode "1.7.0"))
+  :keywords
+  '("filename" "convenience")
+  :url "https://github.com/Silex/docker.el")
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.el
new file mode 100644
index 000000000000..31a370612803
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.el
@@ -0,0 +1,48 @@
+;;; docker-process.el --- Emacs interface to Docker  -*- lexical-binding: t -*-
+
+;; Author: Philippe Vaucher <philippe.vaucher@gmail.com>
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 's)
+(require 'dash)
+
+(defcustom docker-run-as-root nil
+  "Run docker as root."
+  :type 'boolean
+  :group 'docker)
+
+(defcustom docker-command "docker"
+  "The docker binary."
+  :type 'string
+  :group 'docker)
+
+(defun docker-run (action &rest args)
+  "Execute docker ACTION passing arguments ARGS."
+  (let ((default-directory (if (and docker-run-as-root (not (file-remote-p default-directory))) "/sudo::" default-directory)))
+    (let ((command (format "%s %s %s" docker-command action (s-join " " (-flatten (-non-nil args))))))
+      (message command)
+      (shell-command-to-string command))))
+
+(provide 'docker-process)
+
+;;; docker-process.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.elc
new file mode 100644
index 000000000000..1354153b0a43
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-process.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.el
new file mode 100644
index 000000000000..c56bce55a438
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.el
@@ -0,0 +1,73 @@
+;;; docker-utils.el --- Random utilities  -*- lexical-binding: t -*-
+
+;; Author: Philippe Vaucher <philippe.vaucher@gmail.com>
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(defun docker-utils-get-marked-items ()
+  "Get the marked items data from `tabulated-list-entries'."
+  (save-excursion
+    (goto-char (point-min))
+    (let ((selection ()))
+      (while (not (eobp))
+        (when (not (null (tablist-get-mark-state)))
+          (setq selection (-snoc selection (cons (tabulated-list-get-id) (tabulated-list-get-entry)))))
+        (forward-line))
+      selection)))
+
+(defun docker-utils-get-marked-items-ids ()
+  "Get the id part of `docker-utils-get-marked-items'."
+  (-map #'car (docker-utils-get-marked-items)))
+
+(defun docker-utils-setup-popup (val def)
+  (magit-with-pre-popup-buffer (docker-utils-select-if-empty))
+  (magit-popup-default-setup val def))
+
+(defun docker-utils-select-if-empty (&optional arg)
+  "Select current row is selection is empty.
+ARG is unused here, but is required by `add-function'."
+  (save-excursion
+    (when (null (docker-utils-get-marked-items))
+      (tablist-put-mark))))
+
+(defun docker-utils-pop-to-buffer (name)
+  "Like `pop-to-buffer', but suffix NAME with the host if on a remote host."
+  (pop-to-buffer
+   (if (file-remote-p default-directory)
+       (with-parsed-tramp-file-name default-directory nil (concat name " - " host))
+     name)))
+
+(defmacro docker-utils-with-buffer (name &rest body)
+  "Wrapper around `with-current-buffer'.
+Execute BODY in a buffer."
+  (declare (indent defun))
+  `(with-current-buffer (generate-new-buffer (format "* docker - %s *" ,name))
+     (setq buffer-read-only nil)
+     (erase-buffer)
+     ,@body
+     (setq buffer-read-only t)
+     (goto-char (point-min))
+     (pop-to-buffer (current-buffer))))
+
+(provide 'docker-utils)
+
+;;; docker-utils.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.elc
new file mode 100644
index 000000000000..0e14b441d90f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-utils.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.el
new file mode 100644
index 000000000000..7e487f3919ae
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.el
@@ -0,0 +1,121 @@
+;;; docker-volume.el --- Emacs interface to docker-volume  -*- lexical-binding: t -*-
+
+;; Author: Philippe Vaucher <philippe.vaucher@gmail.com>
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'docker-process)
+(require 'docker-utils)
+(require 'magit-popup)
+(require 'tablist)
+
+(defun docker-volume-parse (line)
+  "Convert a LINE from \"docker volume ls\" to a `tabulated-list-entries' entry."
+  (let ((data (s-split " \\{3,15\\}" line t)))
+    (list (nth 1 data) (apply #'vector data))))
+
+(defun docker-volume-entries ()
+  "Return the docker volumes data for `tabulated-list-entries'."
+  (let* ((data (docker-run "volume" "ls"))
+         (lines (cdr (s-split "\n" data t))))
+    (-map #'docker-volume-parse lines)))
+
+(defun docker-volume-refresh ()
+  "Refresh the volumes list."
+  (setq tabulated-list-entries (docker-volume-entries)))
+
+(defun docker-volume-read-name ()
+  "Read a volume name."
+  (completing-read "Volume: " (-map #'car (docker-volume-entries))))
+
+;;;###autoload
+(defun docker-volume-rm (name)
+  "Destroy the volume named NAME."
+  (interactive (list (docker-volume-read-name)))
+  (docker-run "volume rm" name))
+
+;;;###autoload
+(defun docker-volume-dired (name)
+  (interactive (list (docker-volume-read-name)))
+  (let ((path (docker-run "inspect" "-f" "\"{{ .Mountpoint }}\"" name)))
+    (dired (format "/sudo::%s" path))))
+
+(defun docker-volume-rm-selection ()
+  "Run \"docker volume rm\" on the volumes selection."
+  (interactive)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-run "volume rm" it))
+  (tablist-revert))
+
+(defun docker-volume-dired-selection ()
+  "Run `docker-volume-dired' on the volumes selection."
+  (interactive)
+  (docker-utils-select-if-empty)
+  (--each (docker-utils-get-marked-items-ids)
+    (docker-volume-dired it)))
+
+(magit-define-popup docker-volume-rm-popup
+  "Popup for removing volumes."
+  'docker-volume-popups
+  :man-page "docker-volume-rm"
+  :actions  '((?D "Remove" docker-volume-rm-selection))
+  :setup-function #'docker-utils-setup-popup)
+
+(magit-define-popup docker-volume-help-popup
+  "Help popup for docker volumes."
+  :actions '("Docker volumes help"
+             (?D "Remove"     docker-volume-rm-popup)
+             (?d "dired"      docker-volume-dired-selection)
+             "Switch to other parts"
+             (?c "Containers" docker-containers)
+             (?i "Images"     docker-images)
+             (?m "Machines"   docker-machines)
+             (?n "Networks"   docker-networks)))
+
+(defvar docker-volume-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "?" 'docker-volume-help-popup)
+    (define-key map "D" 'docker-volume-rm-popup)
+    (define-key map "d" 'docker-volume-dired-selection)
+    map)
+  "Keymap for `docker-volume-mode'.")
+
+;;;###autoload
+(defun docker-volumes ()
+  "List docker volumes."
+  (interactive)
+  (docker-utils-pop-to-buffer "*docker-volumes*")
+  (docker-volume-mode)
+  (tablist-revert))
+
+(define-derived-mode docker-volume-mode tabulated-list-mode "Volumes Menu"
+  "Major mode for handling a list of docker volumes."
+  (setq tabulated-list-format [("Driver" 10 t)("Name" 10 t)])
+  (setq tabulated-list-padding 2)
+  (setq tabulated-list-sort-key (cons "Driver" nil))
+  (add-hook 'tabulated-list-revert-hook 'docker-volume-refresh nil t)
+  (tabulated-list-init-header)
+  (tablist-minor-mode))
+
+(provide 'docker-volume)
+
+;;; docker-volume.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.elc
new file mode 100644
index 000000000000..e4b8629b9a08
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker-volume.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.el b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.el
new file mode 100644
index 000000000000..19c9d9d787c4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.el
@@ -0,0 +1,51 @@
+;;; docker.el --- Emacs interface to Docker  -*- lexical-binding: t -*-
+
+;; Author: Philippe Vaucher <philippe.vaucher@gmail.com>
+;; URL: https://github.com/Silex/docker.el
+;; Keywords: filename, convenience
+;; Version: 0.7.0
+;; Package-Requires: ((emacs "24.5") (dash "2.14.1") (docker-tramp "0.1") (magit-popup "2.12.3") (s "1.12.0") (tablist "0.70") (json-mode "1.7.0"))
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; # Emacs interface to Docker!
+;;
+;; This package allows you to manipulate docker images, containers & more from Emacs.
+
+;;; Code:
+
+(require 'magit-popup)
+
+(defgroup docker nil
+  "Docker customization group."
+  :group 'convenience)
+
+(magit-define-popup docker
+  "Popup console for dispatching other popups."
+  :actions '("Docker"
+             (?c "Containers" docker-containers)
+             (?i "Images"     docker-images)
+             (?m "Machines"   docker-machines)
+             (?n "Networks"   docker-networks)
+             (?v "Volumes"    docker-volumes)))
+
+(provide 'docker)
+
+;;; docker.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.elc b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.elc
new file mode 100644
index 000000000000..6fc2976ad597
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/docker-20180710.743/docker.elc
Binary files differ