Skip to content

Commit

Permalink
Prototype to support Gradle #83
Browse files Browse the repository at this point in the history
  • Loading branch information
liquidz committed Jul 10, 2021
1 parent 19be2d1 commit 834d516
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
/target
**/.clj-kondo/.cache
**/.lsp
**/.gradle
5 changes: 4 additions & 1 deletion src/antq/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
[antq.dep.boot :as dep.boot]
[antq.dep.clojure :as dep.clj]
[antq.dep.github-action :as dep.gh-action]
[antq.dep.gradle :as dep.gradle]
[antq.dep.leiningen :as dep.lein]
[antq.dep.pom :as dep.pom]
[antq.dep.shadow :as dep.shadow]
Expand Down Expand Up @@ -54,6 +55,7 @@
#{"boot"
"clojure-cli"
"github-action"
"gradle"
"pom"
"shadow-cljs"
"leiningen"
Expand Down Expand Up @@ -198,7 +200,8 @@
(when-not (skip "pom") (dep.pom/load-deps %))
(when-not (skip "shadow-cljs") (dep.shadow/load-deps %))
(when-not (skip "leiningen") (dep.lein/load-deps %))
(when-not (skip "babashka") (dep.bb/load-deps %)))
(when-not (skip "babashka") (dep.bb/load-deps %))
(when-not (skip "gradle") (dep.gradle/load-deps %)))
(distinct (:directory options)))))

(defn mark-only-newest-version-flag
Expand Down
50 changes: 50 additions & 0 deletions src/antq/dep/gradle.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
(ns antq.dep.gradle
(:require
[antq.record :as r]
[antq.util.dep :as u.dep]
[clojure.java.io :as io]
[clojure.java.shell :as sh]
[clojure.string :as str]))

(def ^:private project-file "build.gradle")
(def ^:private dep-regexp #"^[^-]\-+\s")

(defn- filter-deps-from-gradle-dependencies
[file-path]
(let [{:keys [exit out]} (sh/sh "gradle" "--build-file" file-path "--quiet" "dependencies")]
(if (= 0 exit)
(->> (str/split-lines out)
(filter seq)
(filter #(re-seq dep-regexp %))
(map #(str/replace % dep-regexp ""))
(map #(first (str/split % #" " 2)))
(set))
(throw (ex-info "Failed to run gradle" {:exit exit})))))

(defn- convert-grandle-dependency
"e.g. dep-str: 'org.clojure:clojure:1.10.0'"
[file-path dep-str]
(let [[group-id artifact-id version] (str/split dep-str #":" 3)]
(r/map->Dependency {:project :gradle
:type :java
:file file-path
:name (str group-id "/" artifact-id)
:version version
#_#_:repositories repositories})))

(defn extract-deps
[file-path]
(try
(let [deps (filter-deps-from-gradle-dependencies file-path)
deps (map #(convert-grandle-dependency file-path %) deps)]
deps)
(catch Exception _
;; FIXME
nil)))

(defn load-deps
([] (load-deps "."))
([dir]
(let [file (io/file dir project-file)]
(when (.exists file)
(extract-deps (u.dep/relative-path file))))))
23 changes: 23 additions & 0 deletions test/resources/dep/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
plugins {
id 'dev.clojurephant.clojure' version '0.6.0'
id 'maven-publish'
}

group = 'net.clojars.myname'
version = '0.1.0-SNAPSHOT'

repositories {
mavenCentral()
maven {
name = 'clojars'
url = 'https://repo.clojars.org'
}
}

dependencies {
implementation 'org.clojure:clojure:1.10.0'

testRuntimeOnly 'org.ajoberstar:jovial:0.3.0'

devImplementation 'org.clojure:tools.namespace:1.0.0'
}

0 comments on commit 834d516

Please sign in to comment.