[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/dockerfile-mode 69bfba7acc 064/104: Merge pull request #31
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/dockerfile-mode 69bfba7acc 064/104: Merge pull request #31 from purcell/master |
Date: |
Sat, 29 Jan 2022 07:58:34 -0500 (EST) |
branch: elpa/dockerfile-mode
commit 69bfba7acc6bda0d0a5834c3774fffc145337a63
Merge: 3c6bc90360 39f35d927f
Author: Drew Csillag <drew@thecsillags.com>
Commit: GitHub <noreply@github.com>
Merge pull request #31 from purcell/master
Collection of fixes and improvements
---
dockerfile-mode.el | 95 ++++++++++++++++++++++++++++--------------------------
1 file changed, 50 insertions(+), 45 deletions(-)
diff --git a/dockerfile-mode.el b/dockerfile-mode.el
index 793de05c8d..ca131af588 100644
--- a/dockerfile-mode.el
+++ b/dockerfile-mode.el
@@ -1,6 +1,8 @@
-;;; dockerfile-mode.el --- Major mode for editing Docker's Dockerfiles
+;;; dockerfile-mode.el --- Major mode for editing Docker's Dockerfiles -*-
lexical-binding: t -*-
;; Copyright (c) 2013 Spotify AB
+;; Package-Requires: ((emacs "24") (s "1.12"))
+;; Homepage: https://github.com/spotify/dockerfile-mode
;;
;; Licensed under the Apache License, Version 2.0 (the "License"); you may not
;; use this file except in compliance with the License. You may obtain a copy
of
@@ -14,14 +16,20 @@
;; License for the specific language governing permissions and limitations
under
;; the License.
+;;; Commentary:
+
+;; Provides a major mode `dockerfile-mode' for use with the standard
+;; `Dockerfile' file format. Additional convenience functions allow
+;; images to be built easily.
+
;;; Code:
(require 'sh-script)
(require 'rx)
+(require 's)
-(declare-function cygwin-convert-file-name-to-windows "cygw32.c" (file
&optional absolute-p))
-(defvar docker-image-name nil)
+(declare-function cygwin-convert-file-name-to-windows "cygw32.c" (file
&optional absolute-p))
(defgroup dockerfile nil
"dockerfile code editing commands for Emacs."
@@ -93,61 +101,58 @@ Each element of the list will be passed as a separate
(defun dockerfile-build-arg-string ()
"Create a --build-arg string for each element in `dockerfile-build-args'."
- (mapconcat (lambda (arg) (concat "--build-arg " "\"" arg "\""))
+ (mapconcat (lambda (arg) (concat "--build-arg " (shell-quote-argument arg)))
dockerfile-build-args " "))
-(defun standard-filename (file)
+(defun dockerfile-standard-filename (file)
"Convert the file name to OS standard.
If in Cygwin environment, uses Cygwin specific function to convert the
file name. Otherwise, uses Emacs' standard conversion function."
- (format "%s" (if (fboundp 'cygwin-convert-file-name-to-windows)
- (s-replace "\\" "\\\\" (cygwin-convert-file-name-to-windows
file))
- (convert-standard-filename file))))
+ (if (fboundp 'cygwin-convert-file-name-to-windows)
+ (s-replace "\\" "\\\\" (cygwin-convert-file-name-to-windows file))
+ (convert-standard-filename file)))
+
+(defvar dockerfile-image-name nil
+ "Name of the dockerfile currently being used.
+This can be set in file or directory-local variables.")
+(define-obsolete-variable-alias 'docker-image-name 'dockerfile-image-name)
+
+(defvar dockerfile-image-name-history nil
+ "History of image names read by `dockerfile-read-image-name'.")
+
+(defun dockerfile-read-image-name ()
+ "Read a docker image name."
+ (read-string "Image name: " dockerfile-image-name
'dockerfile-image-name-history))
+
;;;###autoload
-(defun dockerfile-build-buffer (image-name)
- "Build an image based upon the buffer"
- (interactive
- (if (null docker-image-name)
- (list (read-string "image-name: " nil nil))
- (list docker-image-name)))
+(defun dockerfile-build-buffer (image-name &optional no-cache)
+ "Build an image called IMAGE-NAME based upon the buffer.
+If prefix arg NO-CACHE is set, don't cache the image."
+ (interactive (list (dockerfile-read-image-name) prefix-arg))
(save-buffer)
(if (stringp image-name)
- (async-shell-command
- (format "%sdocker build -t %s %s -f \"%s\" \"%s\""
- (if dockerfile-use-sudo "sudo " "")
- image-name
- (dockerfile-build-arg-string)
- (standard-filename (buffer-file-name))
- (standard-filename (file-name-directory (buffer-file-name))))
- "*docker-build-output*")
- (print "docker-image-name must be a string, consider surrounding it with
double quotes")))
+ (compilation-start
+ (format
+ "%sdocker build %s -t %s %s -f %s %s"
+ (if dockerfile-use-sudo "sudo " "")
+ (if no-cache "--no-cache" "")
+ (shell-quote-argument image-name)
+ (dockerfile-build-arg-string)
+ (shell-quote-argument (dockerfile-standard-filename
(buffer-file-name)))
+ (shell-quote-argument (dockerfile-standard-filename
default-directory)))
+ nil
+ (lambda (_) (format "*docker-build-output: %s *" image-name)))
+ (print "dockerfile-image-name must be a string, consider surrounding it
with double quotes")))
;;;###autoload
(defun dockerfile-build-no-cache-buffer (image-name)
- "Build an image based upon the buffer without cache"
- (interactive
- (if (null docker-image-name)
- (list (read-string "image-name: " nil nil))
- (list docker-image-name)))
- (save-buffer)
- (if (stringp image-name)
- (async-shell-command
- (format "%s docker build --no-cache -t %s %s -f \"%s\" \"%s\""
- (if dockerfile-use-sudo "sudo" "")
- image-name
- (dockerfile-build-arg-string)
- (standard-filename (buffer-file-name))
- (standard-filename (file-name-directory (buffer-file-name))))
- "*docker-build-output*")
- (print "docker-image-name must be a string, consider surrounding it with
double quotes")))
-
-;; Handle emacs < 24, which does not have prog-mode
-(defalias 'dockerfile-parent-mode
- (if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode))
+ "Build an image called IMAGE-NAME based upon the buffer without cache."
+ (interactive (list (dockerfile-read-image-name)))
+ (dockerfile-build-buffer image-name t))
;;;###autoload
-(define-derived-mode dockerfile-mode dockerfile-parent-mode "Dockerfile"
+(define-derived-mode dockerfile-mode prog-mode "Dockerfile"
"A major mode to edit Dockerfiles.
\\{dockerfile-mode-map}
"
@@ -162,7 +167,7 @@ file name. Otherwise, uses Emacs' standard conversion
function."
(setq local-abbrev-table dockerfile-mode-abbrev-table))
;;;###autoload
-(add-to-list 'auto-mode-alist '("Dockerfile.*\\'" . dockerfile-mode))
+(add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode))
(provide 'dockerfile-mode)
- [nongnu] elpa/dockerfile-mode fadac401c8 019/104: added note about emacs compatibility, (continued)
- [nongnu] elpa/dockerfile-mode fadac401c8 019/104: added note about emacs compatibility, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 4d3ccfd569 024/104: Merge pull request #9 from Silex/master, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode cfa634ff1d 032/104: Merge pull request #18 from nabeo/add_dockerfile-build-no-cache-buffer, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 40be396417 036/104: Merge pull request #20 from djui/patch-1, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 53434afa3b 042/104: Merge pull request #23 from nabeo/add_stopsignal_to_font_lock_keywaords, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 5dad943a19 053/104: Fix overly-general auto-mode-alist entry, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode ca679539c4 054/104: Fix naming of unprefixed symbol, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 5c60ad7a78 056/104: Rename image name variable, and read it consistently, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode b53020b781 065/104: Add custom `dockerfile-use-sudo` type and group, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 52f821c9cd 061/104: Add missing package dependency on "s", ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 69bfba7acc 064/104: Merge pull request #31 from purcell/master,
ELPA Syncer <=
- [nongnu] elpa/dockerfile-mode 8172d83d5d 076/104: Merge pull request #40 from abloomston/safe-local-variable, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 4ebf274d49 078/104: Add imenu support, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 7223d92718 081/104: Support indentation for comments, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 780e6f51ca 085/104: Add doc string for the format of the docker build command., ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode d31f7685eb 086/104: Remove keybinding to #'dockerfile-test-function, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 6a56c1cc17 089/104: Remove dependency on s.el, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 27a9f4d2f3 092/104: Added the option to use docker buildkit, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 83bc055f5b 103/104: Readme: Replace obsolete variable name with current, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode ad06a41259 101/104: Remove unnecessary declaration of dockerfile-mode-hook, ELPA Syncer, 2022/01/29
- [nongnu] elpa/dockerfile-mode 628315e2e4 102/104: Added version and URL header, ELPA Syncer, 2022/01/29