Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion lisp/lint/elint.el
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
;;
;;; Core

(defvar eask-lint-elint--warnings-p nil
"Non-nil if any warnings were reported in the run.")

(defun eask-lint-elint--file (filename)
"Run elint on FILENAME."
(let* ((filename (expand-file-name filename))
Expand All @@ -41,6 +44,10 @@
(eask-msg "`%s` with elint" (ansi-green file))
(eask-with-verbosity 'debug (elint-file filename))
(eask-print-log-buffer (elint-get-log-buffer))
(with-current-buffer (elint-get-log-buffer)
(goto-char (point-min))
(when (re-search-forward ":Warning:" nil t)
(setq eask-lint-elint--warnings-p t)))
(kill-buffer (elint-get-log-buffer))))

(eask-start
Expand All @@ -56,7 +63,10 @@
(eask-msg "")
(eask-info "(Total of %s file%s %s checked)" (length files)
(eask--sinr files "" "s")
(eask--sinr files "has" "have")))
(eask--sinr files "has" "have"))
(when (and eask-lint-elint--warnings-p
(eask-strict-p))
(eask--exit 'failure)))
;; Pattern defined, but no file found!
(patterns
(eask-info "(No files match wildcard: %s)"
Expand Down
22 changes: 18 additions & 4 deletions lisp/lint/elsa.el
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@
(defconst eask-lint-elsa--version nil
"Elsa version.")

(defvar eask-lint-elsa--warnings-p nil
"Non-nil if any warnings were reported in the run.")

(defvar eask-lint-elsa--errors-p nil
"Non-nil if any errors were reported in the run.")

(defun eask-lint-elsa--analyse-file (filename)
"Process FILENAME."
(let* ((filename (expand-file-name filename))
Expand All @@ -49,12 +55,16 @@
(eask-msg "")
(eask-msg "`%s` with elsa (%s)" (ansi-green file) eask-lint-elsa--version)
(eask-with-verbosity 'debug
(setq errors (oref (elsa-analyse-file filename elsa-global-state) errors)))
(setq errors (oref (elsa-analyse-file filename elsa-global-state) errors)))
(if errors
(--each (reverse errors)
(let ((line (string-trim (concat file ":" (elsa-message-format it)))))
(cond ((string-match-p "[: ][Ee]rror:" line) (eask-error line))
((string-match-p "[: ][Ww]arning:" line) (eask-warn line))
(cond ((string-match-p "[: ][Ee]rror:" line)
(setq eask-lint-elsa--errors-p 't)
(eask-error line))
((string-match-p "[: ][Ww]arning:" line)
(setq eask-lint-elsa--warnings-p 't)
(eask-warn line))
(t (eask-log line)))))
(eask-msg "No issues found"))))

Expand All @@ -77,7 +87,11 @@
(mapcar #'eask-lint-elsa--analyse-file files)
(eask-msg "")
(eask-info "(Total of %s file%s linted)" (length files)
(eask--sinr files "" "s")))
(eask--sinr files "" "s"))
(when (or eask-lint-elsa--errors-p
(and eask-lint-elsa--warnings-p
(eask-strict-p)))
(eask--exit 'failure)))
;; Pattern defined, but no file found!
(patterns
(eask-msg "")
Expand Down
3 changes: 0 additions & 3 deletions lisp/lint/indent.el
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,6 @@
(let* ((patterns (eask-args))
(files (if patterns (eask-expand-file-specs (eask-args))
(eask-package-el-files))))
(eask-install-dependencies)
(eask-with-verbosity 'debug
(ignore-errors (mapc #'load (eask-package-el-files))))
(cond
;; Files found, do the action!
(files
Expand Down
12 changes: 11 additions & 1 deletion lisp/lint/package.el
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@
;;
;;; Core

(defvar eask-lint-package--warnings-p nil
"Non-nil if any warnings were reported in the run.")

(defconst eask-lint-package--version nil
"`package-lint' version.")

Expand All @@ -55,6 +58,10 @@
(with-current-buffer (find-file filename)
(package-lint-current-buffer)
(kill-current-buffer)))
(with-current-buffer "*Package-Lint*"
(goto-char (point-min))
(when (re-search-forward "warning:" nil t)
(setq eask-lint-package--warnings-p t)))
(eask-print-log-buffer "*Package-Lint*"))

(eask-start
Expand All @@ -77,7 +84,10 @@
(mapcar #'eask-lint-package--file files)
(eask-msg "")
(eask-info "(Total of %s file%s linted)" (length files)
(eask--sinr files "" "s")))
(eask--sinr files "" "s"))
(when (and eask-lint-package--warnings-p
(eask-strict-p))
(eask--exit 'failure)))
;; Pattern defined, but no file found!
(patterns
(eask-msg "")
Expand Down
19 changes: 14 additions & 5 deletions lisp/lint/regexps.el
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
(defconst eask-lint-regexps--relint-version nil
"`relint' version.")

(defvar eask-lint-regexps--warnings-p nil
"Non-nil if any warnings were reported in the run.")

(defun eask-lint-regexps--relint-file (filename)
"Package lint FILENAME."
(let* ((filename (expand-file-name filename))
Expand All @@ -47,12 +50,15 @@
(with-current-buffer (find-file filename)
(setq errors (relint-buffer (current-buffer)))
(dolist (err errors)
(let* ((msg (nth 0 err))
(error-pos (nth 2 err))
(severity (nth 5 err))
(let* ((msg (seq-elt err 0))
(error-pos (seq-elt err 2))
(severity (seq-elt err 7))
(report-func (pcase severity
(`error #'eask-error)
(`warning #'eask-warn))))
(`warning #'eask-warn)
(_ #'eask-info))))
(when (eq severity 'warning)
(setq eask-lint-regexps--warnings-p 't))
(funcall report-func "%s:%s %s: %s"
file (line-number-at-pos error-pos)
(capitalize (eask-2str severity)) msg)))
Expand All @@ -79,7 +85,10 @@
(mapcar #'eask-lint-regexps--relint-file files)
(eask-msg "")
(eask-info "(Total of %s file%s linted)" (length files)
(eask--sinr files "" "s")))
(eask--sinr files "" "s"))
(when (and eask-lint-regexps--warnings-p
(eask-strict-p))
(eask--exit 'failure)))
;; Pattern defined, but no file found!
(patterns
(eask-msg "")
Expand Down
Loading
Loading