[FBT]: Add the skeleton of the lint task

This commit is contained in:
Sameer Rahmani 2020-04-15 18:37:17 +01:00
parent c6f84490a6
commit d6129d0eb5
1 changed files with 25 additions and 1 deletions

26
fbt
View File

@ -26,10 +26,33 @@
(defvar FG42_VERSION "3.0.0-snapshot" (defvar FG42_VERSION "3.0.0-snapshot"
"The version number of the current build of FG42.") "The version number of the current build of FG42.")
(defun ->path (dir)
"Return the absolute path to the given DIR with respect to FG42_HOME."
(concat (getenv "FG42_HOME") (format "/%s" dir)))
(defun el-files-in (dir)
"Return a list of elisp files in the given DIR."
(split-string (shell-command-to-string
(format "find %s -iname \"*.el\"" (->path dir))) "\n" t))
(defun lint (dir)
"Run linter on all the elisp files in the given DIR."
(let ((files (el-files-in dir)))
(if files
(dolist (file files)
;; TODO: Setup flycheck here and use it to lint the elisp file.
;; tried to use flymake but it doesn't let you do it manually
(with-temp-buffer
(insert-file-contents file)))
(error "Couldn't find any elisp files"))))
(defun compile (dir) (defun compile (dir)
"Compile all the elisp files in the given DIR regardless of timestamp. "Compile all the elisp files in the given DIR regardless of timestamp.
The DIR should be relative to FG42_HOME." The DIR should be relative to FG42_HOME."
(let ((target (concat (getenv "FG42_HOME") (format "/%s" dir)))) (let ((target (->path dir)))
(message "Compiling '%s'..." target) (message "Compiling '%s'..." target)
(add-to-list 'load-path target) (add-to-list 'load-path target)
(byte-recompile-directory target 0 t))) (byte-recompile-directory target 0 t)))
@ -64,6 +87,7 @@ The DIR should be relative to FG42_HOME."
(setenv "FG42_VERSION" FG42_VERSION) (setenv "FG42_VERSION" FG42_VERSION)
(cond (cond
((string= command "lint") (funcall #'lint (or (car args) "core")))
((string= command "compile") (funcall #'compile (or (car args) "core"))) ((string= command "compile") (funcall #'compile (or (car args) "core")))
((string= command "build") (funcall #'build args)) ((string= command "build") (funcall #'build args))
(t (print-help command))))) (t (print-help command)))))