emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] scratch/javaimp-gradle 66c8204: Fixes for gradle


From: Filipp Gunbin
Subject: [elpa] scratch/javaimp-gradle 66c8204: Fixes for gradle
Date: Fri, 1 Nov 2019 12:53:37 -0400 (EDT)

branch: scratch/javaimp-gradle
commit 66c8204255ed5fb5a2fc447b948a453eb901ff04
Author: Filipp Gunbin <address@hidden>
Commit: Filipp Gunbin <address@hidden>

    Fixes for gradle
---
 packages/javaimp/getInfo.inc.kts     | 21 ++++++++++++++
 packages/javaimp/getJarsOnly.inc.kts |  8 ++++++
 packages/javaimp/javaimp-gradle.el   | 54 +++++++++++++-----------------------
 3 files changed, 48 insertions(+), 35 deletions(-)

diff --git a/packages/javaimp/getInfo.inc.kts b/packages/javaimp/getInfo.inc.kts
new file mode 100644
index 0000000..3aceb9b
--- /dev/null
+++ b/packages/javaimp/getInfo.inc.kts
@@ -0,0 +1,21 @@
+// use syntax which is valid both in Groovy and in Kotlin
+doLast {
+     println("id=${project.group}:${project.name}:${project.version}")
+     if (project.parent != null) {
+       
println("parent-id=${project.parent.group}:${project.parent.name}:${project.parent.version}")
+     }
+     println("file=${project.buildFile}")
+     println("final-name=${project.archivesBaseName}")
+     println("build-dir=${project.buildDir}")
+     if (project.hasProperty("sourceSets")) {
+       println("source-dirs=" + project.sourceSets.stream()
+         .flatMap { it.java.srcDirs.stream().map { it.path } }
+         .collect(Collectors.joining(File.pathSeparator)))
+       println("dep-jars=" + project.sourceSets.stream()
+         .flatMap { it.compileClasspath.files.stream().filter { 
it.name.endsWith("jar") }.map { it.path } }
+         .collect(Collectors.joining(File.pathSeparator)))
+     } else {
+       println("source-dirs=")
+       println("dep-jars=")
+     }
+}
diff --git a/packages/javaimp/getJarsOnly.inc.kts 
b/packages/javaimp/getJarsOnly.inc.kts
new file mode 100644
index 0000000..4951255
--- /dev/null
+++ b/packages/javaimp/getJarsOnly.inc.kts
@@ -0,0 +1,8 @@
+// use syntax which is valid both in Groovy and in Kotlin
+doLast {
+     if (project.hasProperty("sourceSets")) {
+       println(project.sourceSets.stream()
+         .flatMap { it.compileClasspath.files.stream().filter { 
it.name.endsWith("jar") }.map { it.path } }
+         .collect(Collectors.joining(File.pathSeparator)))
+     }
+}
diff --git a/packages/javaimp/javaimp-gradle.el 
b/packages/javaimp/javaimp-gradle.el
index 62be517..9dc74fd 100644
--- a/packages/javaimp/javaimp-gradle.el
+++ b/packages/javaimp/javaimp-gradle.el
@@ -28,30 +28,16 @@ gradlew program, it is used in preference."
   :group 'javaimp
   :type 'string)
 
-(defconst javaimp--gradle-get-info-action
-  "doLast {
-     println(\"id=${project.group}:${project.name}:${project.version}\")
-     if (project.parent != null) {
-       
println(\"parent-id=${project.parent.group}:${project.parent.name}:${project.parent.version}\")
-     }
-     println(\"file=${project.buildFile}\")
-     println(\"final-name=${project.archivesBaseName}\")
-     println(\"source-dirs=\" + sourceSets.stream()
-       .flatMap { it.java.srcDirs.stream().map { it.path } }
-       .collect(Collectors.joining(File.pathSeparator)))
-     println(\"build-dir=${project.buildDir}\")
-     println(\"dep-jars=\" + sourceSets.stream()
-       .flatMap { it.compileClasspath.files.stream().filter { 
it.name.endsWith(\"jar\") }.map { it.path } }
-       .collect(Collectors.joining(File.pathSeparator)))
-}"
-     "Task body, uses Java syntax to be reused in both Groovy and Kotlin")
-
-(defconst javaimp--gradle-get-jars-action
-  "doLast {
-     println(sourceSets.stream()
-       .flatMap { it.compileClasspath.files.stream().filter { 
it.name.endsWith(\"jar\") }.map { it.path } }
-       .collect(Collectors.joining(File.pathSeparator)))
-}"
+(defconst javaimp--gradle-get-info-script
+  (with-temp-buffer
+    (insert-file-contents "getInfo.inc.kts")
+    (buffer-string))
+  "Task body, uses Java syntax to be reused in both Groovy and Kotlin")
+
+(defconst javaimp--gradle-get-jars-script
+  (with-temp-buffer
+    (insert-file-contents "getJarsOnly.inc.kts")
+    (buffer-string))
   "Task body, uses Java syntax to be reused in both Groovy and Kotlin")
 
 (defun javaimp--gradle-visit (file)
@@ -62,7 +48,7 @@ invokes task contained in it.  This task returns all needed
 information."
   (message "Visiting Gradle build file %s..." file)
   (let* ((alists (javaimp--gradle-call file
-                                       javaimp--gradle-get-info-action
+                                       javaimp--gradle-get-info-script
                                        #'javaimp--gradle-handler
                                        "javaimpTask"))
          (modules (mapcar (lambda (alist)
@@ -75,18 +61,16 @@ information."
 
 (defun javaimp--gradle-handler ()
   (goto-char (point-min))
-  (let (alist res parts sym val)
-    (while (not (eobp))
-      (setq parts (split-string (thing-at-point 'line) "[=\n]+" t))
-      (setq sym (intern (or (nth 0 parts)
-                            (error "Invalid line in gradle output: %s"
-                                   (thing-at-point 'line))))
-            val (nth 1 parts))
+  (let (alist res sym val)
+    (while (re-search-forward "^\\([[:alnum:]-]+\\)=\\(.*\\)$" nil t)
+      (setq sym (intern (match-string 1))
+            val (match-string 2))
+      (if (string-blank-p val)
+          (setq val nil))
       (when (and (eq sym 'id) alist)    ;start of next module
         (push alist res)
         (setq alist nil))
-      (push (cons sym val) alist)
-      (forward-line 1))
+      (push (cons sym val) alist))
     (when alist                         ;last module
       (push alist res))
     (nreverse res)))
@@ -121,7 +105,7 @@ information."
   ;; local gradlew which needs to be invoked will usually reside
   ;; alongside top-level build file
   (javaimp--gradle-call (javaimp-module-file-orig module)
-                        javaimp--gradle-get-jars-action
+                        javaimp--gradle-get-jars-script
                         (lambda ()
                           ;; expect just a single line
                           (thing-at-point 'line))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]