From 699b6fd0b4279170ed62af13af549c7ec188af12 Mon Sep 17 00:00:00 2001 From: Timo Wilken Date: Tue, 22 Nov 2022 00:12:36 +0100 Subject: Track custom Emacs packages in guix home --- emacs-packages/actionlint.el | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 emacs-packages/actionlint.el (limited to 'emacs-packages/actionlint.el') diff --git a/emacs-packages/actionlint.el b/emacs-packages/actionlint.el new file mode 100644 index 00000000..3c37e34b --- /dev/null +++ b/emacs-packages/actionlint.el @@ -0,0 +1,34 @@ +;;; actionlint.el --- Flycheck checker for GitHub Actions. +;;; Commentary: +;; GitHub Actions are defined using mostly plain YAML files. +;; Actionlint is a linter catching GitHub Action-specific mistakes, and also +;; checks Shell and Python code embedded in Actions (using shellcheck and +;; pyflakes, respectively). +;;; Code: + +(require 'flycheck) + +(defun actionlint-github-workflow-p () + "Does the current buffer contain a GitHub Action?" + (string-match-p "\\.github/workflows/[^/]+\\.yml\\'" (buffer-file-name))) + +(flycheck-def-executable-var actionlint "actionlint") + +(flycheck-define-checker actionlint + "A syntax checker and linter for alidist recipes." + ;; `flycheck-alidist-executable' automatically overrides the car of the + ;; :command list if set and non-nil. + :command ("actionlint" "-no-color" "-oneline" source) + :error-patterns + ((error line-start (file-name) ":" line ":" column ": " (message) + " [" (id (minimal-match (one-or-more not-newline))) "]" line-end)) + ;; Only enable this in actual GitHub Actions, not just any YAML document. + :modes (yaml-mode) + :predicate actionlint-github-workflow-p + ;; Also check the document with YAML checkers, whether or not we have errors. + :next-checkers (yaml-ruby yaml-yamllint)) + +(add-to-list 'flycheck-checkers 'actionlint) + +(provide 'actionlint) +;;; actionlint.el ends here -- cgit v1.2.3