branch: externals/javaimp commit d428651fd9c944cab0f60c9e4c016bc4aadbecc3 Author: Filipp Gunbin <fgun...@fastmail.fm> Commit: Filipp Gunbin <fgun...@fastmail.fm>
* javaimp-gradle.el: Cosmetics --- javaimp-gradle.el | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/javaimp-gradle.el b/javaimp-gradle.el index af3fd5a..3e690e6 100644 --- a/javaimp-gradle.el +++ b/javaimp-gradle.el @@ -22,7 +22,8 @@ (defconst javaimp--gradle-task-body (with-temp-buffer - (insert-file-contents (expand-file-name "gradleTaskBody.inc.kts" javaimp--basedir)) + (insert-file-contents + (expand-file-name "gradleTaskBody.inc.kts" javaimp--basedir)) (buffer-string)) "Task body, uses syntax which can be used both in Groovy and Kotlin") @@ -52,6 +53,12 @@ information." (javaimp-module-id el)))))) (defun javaimp--gradle-handler () + "Parse current buffer into list of project descriptors, each of +which is an alist of attributes (NAME . VALUE). Each attribute +occupies one line, and is of the form 'NAME=VALUE'. See file +'gradleTaskBody.inc.kts' for the script which generates such +output. Attribute 'id' signifies the start of another +descriptor." (goto-char (point-min)) (let (alist res sym val) (while (re-search-forward "^\\([[:alnum:]-]+\\)=\\(.*\\)$" nil t) @@ -68,16 +75,18 @@ information." (nreverse res))) (defun javaimp--gradle-module-from-alist (alist file-orig) + "Make `javaimp-module' structure out of attribute alist ALIST." (make-javaimp-module - :id (javaimp--gradle-id-from-semi-separated (cdr (assq 'id alist))) - :parent-id (javaimp--gradle-id-from-semi-separated (cdr (assq 'parent-id alist))) + :id (javaimp--gradle-id-from-semi-separated + (cdr (assq 'id alist))) + :parent-id (javaimp--gradle-id-from-semi-separated + (cdr (assq 'parent-id alist))) :file (cdr (assq 'file alist)) :file-orig file-orig ;; jar/war supported - :final-name (let ((final-name (javaimp-cygpath-convert-maybe - (cdr (assq 'final-name alist))))) - (and final-name - (member (file-name-extension final-name) '("jar" "war")) + :final-name (when-let ((final-name (javaimp-cygpath-convert-maybe + (cdr (assq 'final-name alist))))) + (and (member (file-name-extension final-name) '("jar" "war")) final-name)) :source-dirs (mapcar #'file-name-as-directory (javaimp--split-native-path @@ -92,7 +101,8 @@ information." (defun javaimp--gradle-id-from-semi-separated (str) (when str - (let ((parts (split-string str ";" t)) artifact) + (let ((parts (split-string str ";" t)) + artifact) (unless (= (length parts) 3) (error "Invalid project id: %s" str)) (setq artifact (nth 1 parts)) @@ -101,12 +111,13 @@ information." ;; convert "[:]foo:bar:baz" into "foo.bar.baz" (setq artifact (replace-regexp-in-string ":" "." (string-remove-prefix ":" artifact)))) - (make-javaimp-id :group (nth 0 parts) :artifact artifact + (make-javaimp-id :group (nth 0 parts) + :artifact artifact :version (nth 2 parts))))) (defun javaimp--gradle-fetch-dep-jars-path (module) - ;; always invoke on root file becase module's file may not exist - ;; (even if reported as project.buildFile property) + ;; Always invoke on root file becase module's file may not exist, + ;; even if reported by Gradle as project.buildFile (javaimp--gradle-call (javaimp-module-file-orig module) javaimp--gradle-task-body (lambda () @@ -118,11 +129,13 @@ information." (defun javaimp--gradle-call (file init-script-body handler task) (let* ((is-kotlin (equal (file-name-extension file) "kts")) - (init-file (make-temp-file "javaimp" nil - (if is-kotlin ".kts") - (if is-kotlin - (javaimp--gradle-init-script-kotlin init-script-body) - (javaimp--gradle-init-script init-script-body)))) + (init-file + (make-temp-file "javaimp" nil + (if is-kotlin ".kts") + (funcall (if is-kotlin + #'javaimp--gradle-init-script-kotlin + #'javaimp--gradle-init-script) + init-script-body))) (local-gradlew (concat (file-name-directory file) "gradlew"))) (javaimp--call-build-tool (if (file-exists-p local-gradlew)