-
-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #57 from liquidz/dev
0.11.0
- Loading branch information
Showing
32 changed files
with
636 additions
and
138 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
(ns antq.diff) | ||
|
||
(defmulti get-diff-url | ||
(fn [version-checked-dep] | ||
(:type version-checked-dep))) | ||
|
||
(defmethod get-diff-url :default | ||
[_dep] | ||
nil) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
(ns antq.diff.git-sha | ||
(:require | ||
[antq.diff :as diff] | ||
[antq.log :as log] | ||
[antq.util.url :as u.url] | ||
[clojure.string :as str])) | ||
|
||
(defmethod diff/get-diff-url :git-sha | ||
[dep] | ||
(when-let [url (get-in dep [:extra :url])] | ||
(cond | ||
(str/starts-with? url "https://github.com/") | ||
(format "%scompare/%s...%s" | ||
(u.url/ensure-tail-slash url) | ||
(:version dep) | ||
(:latest-version dep)) | ||
|
||
:else | ||
(log/error (str "Diff is not supported for " url))))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
(ns antq.diff.github-tag | ||
(:require | ||
[antq.diff :as diff] | ||
[clojure.string :as str])) | ||
|
||
(defmethod diff/get-diff-url :github-tag | ||
[dep] | ||
(format "https://github.com/%s/compare/%s...%s" | ||
(str/join "/" (take 2 (str/split (:name dep) #"/"))) | ||
(:version dep) | ||
(:latest-version dep))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
(ns antq.diff.java | ||
(:require | ||
[antq.diff :as diff] | ||
[antq.log :as log] | ||
[antq.util.git :as u.git] | ||
[antq.util.maven :as u.mvn] | ||
[antq.util.url :as u.url] | ||
[clojure.string :as str]) | ||
(:import | ||
(org.eclipse.aether.resolution | ||
ArtifactRequest))) | ||
|
||
(defn memoize-by | ||
[f key-fn] | ||
(let [mem (atom {})] | ||
(fn [m & args] | ||
(if-let [res (get @mem (get m key-fn))] | ||
res | ||
(let [ret (apply f m args)] | ||
(swap! mem assoc (get m key-fn) ret) | ||
ret))))) | ||
|
||
(defn- get-repository-url* | ||
[{:keys [name version] :as dep}] | ||
(try | ||
(let [opts (u.mvn/dep->opts dep) | ||
{:keys [system session artifact remote-repos]} (u.mvn/repository-system name version opts) | ||
req (doto (ArtifactRequest.) | ||
(.setArtifact artifact) | ||
(.setRepositories remote-repos))] | ||
(some-> (.resolveArtifact system session req) | ||
(.getRepository) | ||
(.getUrl))) | ||
;; Skip showing diff URL when fetching repository URL is failed | ||
(catch Exception _ nil))) | ||
(def get-repository-url (memoize-by get-repository-url* :name)) | ||
|
||
(defn- dep->pom-url | ||
[dep] | ||
(let [{:keys [version]} dep | ||
[group-id artifact-id] (str/split (:name dep) #"/" 2) | ||
repo-url (get-repository-url dep)] | ||
(when repo-url | ||
(format "%s%s/%s/%s/%s-%s.pom" | ||
(u.url/ensure-tail-slash repo-url) | ||
(str/replace group-id "." "/") | ||
artifact-id | ||
version | ||
artifact-id | ||
version)))) | ||
|
||
(defn- get-scm-url* | ||
[dep] | ||
(try | ||
(when-let [model (some-> dep | ||
(dep->pom-url) | ||
(u.mvn/read-pom))] | ||
(-> model | ||
(u.mvn/get-scm) | ||
(u.mvn/get-scm-url) | ||
;; fallback | ||
(or (u.mvn/get-url model)) | ||
;; normalize | ||
(u.url/ensure-https) | ||
(u.url/ensure-git-https-url))) | ||
|
||
;; Skip showing diff URL when POM file is not found | ||
(catch java.io.FileNotFoundException _ nil))) | ||
(def get-scm-url (memoize-by get-scm-url* :name)) | ||
|
||
(defmethod diff/get-diff-url :java | ||
[dep] | ||
(when-let [url (get-scm-url dep)] | ||
(cond | ||
(str/starts-with? url "https://github.com/") | ||
(let [tags (u.git/tags-by-ls-remote url) | ||
current (first (filter #(str/includes? % (:version dep)) tags)) | ||
latest (or (first (filter #(str/includes? % (:latest-version dep)) tags)) | ||
;; If there isn't a tag for latest version | ||
"head")] | ||
(if current | ||
(format "%scompare/%s...%s" | ||
(u.url/ensure-tail-slash url) | ||
current | ||
latest) | ||
(do (log/error (str "The tag for current version is not found: " url)) | ||
;; not diff, but URL is useful for finding the differences. | ||
nil))) | ||
|
||
:else | ||
(do (log/error (str "Diff is not supported for " url)) | ||
;; not diff, but URL is useful for finding the differences. | ||
nil)))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
(ns antq.log) | ||
|
||
(defn info | ||
[s] | ||
(println s)) | ||
|
||
(defn error | ||
[s] | ||
(binding [*out* *err*] | ||
(println s))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,23 @@ | ||
(ns antq.record) | ||
|
||
(defrecord Dependency | ||
[type file name version latest-version | ||
repositories project]) | ||
[;; Dependency type keyword | ||
;; e.g. :java, :git-sha or :github-tag | ||
type | ||
;; File path for project configuration file | ||
file | ||
;; Dependency name | ||
;; e.g. "org.clojure/clojure", "medley/medley" | ||
name | ||
;; Current version string | ||
version | ||
;; Latest version string (Nullable) | ||
latest-version | ||
;; Additional Maven repositories (Nullable) | ||
;; e.g. {"nexus-snapshots" {:url "http://localhost:8081/repository/maven-snapshots/"}} | ||
repositories | ||
;; Project type keyword | ||
;; e.g. :clojure, :leiningen, :shadow-cljs and so on. | ||
project | ||
;; Diff URL for Version Control System (Nullable) | ||
diff-url]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,11 @@ | ||
(ns antq.report) | ||
(ns antq.report | ||
(:require | ||
[antq.log :as log])) | ||
|
||
(defmulti reporter | ||
(fn [_deps options] | ||
(:reporter options))) | ||
|
||
(defmethod reporter :default | ||
[_ options] | ||
(println "Unknown reporter:" (:reporter options))) | ||
(log/error (str "Unknown reporter: " (:reporter options)))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.