Skip to content

Commit

Permalink
Merge pull request #4 from liquidz/dev
Browse files Browse the repository at this point in the history
ver 0.3.0
  • Loading branch information
liquidz committed May 8, 2020
2 parents f1293ac + 2155b11 commit c94fd7d
Show file tree
Hide file tree
Showing 27 changed files with 428 additions and 70 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: coverage
on: push
jobs:
coverage:
runs-on: ubuntu-latest
# container:
# image: clojure:openjdk-14-tools-deps
steps:
- uses: actions/checkout@v2.1.0
- name: Install clojure
run: |
curl -O https://download.clojure.org/install/linux-install-1.10.1.536.sh
chmod +x linux-install-1.10.1.536.sh
sudo ./linux-install-1.10.1.536.sh
- name: Cache m2
uses: actions/cache@v1.1.2
with:
path: /root/.m2
key: root-m2-${{ hashFiles('deps.edn') }}
- name: Run cloverage
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
bash script/coverage.sh
bash <(curl -s https://codecov.io/bash)
15 changes: 15 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,21 @@ All notable changes to this project will be documented in this file. This change

== Unreleased (dev)

== 0.3.0 (2020-05-09)
// {{{
=== Added
* Skip under-development versions by default.
** e.g. `alpha`, `beta`, and `RC`
* Added more tests and codecov badge.

=== Changed
* Changed github action to fetch latest version from list-tags API.
** https://developer.github.com/v3/repos/#list-tags

=== Fixed
* Fixed to detect Leiningen plugin dependencies too.
// }}}

== 0.2.2 (2020-05-07)
// {{{
=== Fixed
Expand Down
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,8 @@ deploy: clean target/antq.jar
docker:
docker build -t uochan/antq .

coverage:
bash script/coverage.sh

clean:
rm -rf target
2 changes: 2 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ Point out your outdated dependencies.
image:https://github.com/liquidz/antq/workflows/test/badge.svg["GitHub Actions for test workflow", link="https://github.com/liquidz/antq/actions?query=workflow%3Atest"]
image:https://github.com/liquidz/antq/workflows/lint/badge.svg["GitHub Actions for lint workflow", link="https://github.com/liquidz/antq/actions?query=workflow%3Alint"]
image:https://github.com/liquidz/antq/workflows/dependencies/badge.svg["GitHub Actions for dependencies workflow", link="https://github.com/liquidz/antq/actions?query=workflow%3Adependencies"]
image:https://codecov.io/gh/liquidz/antq/branch/master/graph/badge.svg["codecov", link="https://codecov.io/gh/liquidz/antq"]

image:https://img.shields.io/clojars/v/antq.svg["Clojars Project", link="https://clojars.org/antq"]
image:https://img.shields.io/badge/docker-automated-blue["Docker Hub", link="https://hub.docker.com/repository/docker/uochan/antq"]

Expand Down
9 changes: 7 additions & 2 deletions deps.edn
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{
:paths ["src"]
:deps
{ancient-clj {:mvn/version "0.6.15"}
{org.clojure/clojure {:mvn/version "1.10.1"}
ancient-clj {:mvn/version "0.6.15"}
cheshire {:mvn/version "5.10.0"}
clj-commons/clj-yaml {:mvn/version "0.7.1"}
org.clojure/clojure {:mvn/version "1.10.1"}
version-clj {:mvn/version "0.1.2"}}

:aliases
Expand All @@ -15,6 +16,10 @@
:test
{:main-opts ["-m" "kaocha.runner"]}

:coverage
{:extra-deps {cloverage {:mvn/version "RELEASE"}}
:main-opts ["-m" "cloverage.coverage"]}

:depstar
{:extra-deps {seancorfield/depstar {:mvn/version "RELEASE"}}}

Expand Down
7 changes: 6 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>antq</groupId>
<artifactId>antq</artifactId>
<version>0.2.2</version>
<version>0.3.0</version>
<name>antq</name>
<description>Point out your outdated dependencies</description>
<url>https://github.com/liquidz/antq</url>
Expand All @@ -29,6 +29,11 @@
<artifactId>clj-yaml</artifactId>
<version>0.7.1</version>
</dependency>
<dependency>
<groupId>cheshire</groupId>
<artifactId>cheshire</artifactId>
<version>5.10.0</version>
</dependency>
<dependency>
<groupId>version-clj</groupId>
<artifactId>version-clj</artifactId>
Expand Down
3 changes: 3 additions & 0 deletions script/coverage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

clojure -A:dev:coverage --src-ns-path=src --test-ns-path=test --codecov
42 changes: 32 additions & 10 deletions src/antq/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,33 @@
(:version dep)
(:latest-version dep)))))

(defn- assoc-versions
[dep]
(assoc dep :_versions (ver/get-sorted-versions dep)))

(defn- assoc-latest-version
[dep]
(let [vers (cond->> (:_versions dep)
(not (ver/under-devleopment? (:version dep)))
(drop-while ver/under-devleopment?))
latest-version (first vers)]
(assoc dep :latest-version latest-version)))

(defn- dissoc-no-longer-used-keys
[dep]
(dissoc dep :_versions))

(defn outdated-deps
[deps]
(->> deps
(remove skip-artifacts?)
(remove using-release-version?)
(pmap #(assoc % :latest-version (ver/get-latest-version %)))
(remove #(or (skip-artifacts? %)
(using-release-version? %)))
(pmap assoc-versions)
(map (comp dissoc-no-longer-used-keys
assoc-latest-version))
(remove latest?)))

(defn- compare-deps
(defn compare-deps
[x y]
(let [prj (.compareTo (:file x) (:file y))]
(if (zero? prj)
Expand Down Expand Up @@ -77,14 +95,18 @@
[outdated-deps]
(System/exit (if (seq outdated-deps) 1 0)))

(defn fetch-deps
[]
(concat (dep.boot/load-deps)
(dep.clj/load-deps)
(dep.gh-action/load-deps)
(dep.pom/load-deps)
(dep.shadow/load-deps)
(dep.lein/load-deps)))

(defn -main
[]
(let [deps (concat (dep.boot/load-deps)
(dep.clj/load-deps)
(dep.gh-action/load-deps)
(dep.pom/load-deps)
(dep.shadow/load-deps)
(dep.lein/load-deps))]
(let [deps (fetch-deps)]
(if (seq deps)
(-> deps
outdated-deps
Expand Down
8 changes: 5 additions & 3 deletions src/antq/dep/boot.clj
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
:version version}))))

(defn load-deps
[]
(when (.exists (io/file project-file))
(extract-deps (slurp project-file))))
([] (load-deps "."))
([dir]
(let [file (io/file dir project-file)]
(when (.exists file)
(extract-deps (slurp file))))))
8 changes: 5 additions & 3 deletions src/antq/dep/clojure.clj
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
:version version}))))

(defn load-deps
[]
(when (.exists (io/file project-file))
(extract-deps (slurp project-file))))
([] (load-deps "."))
([dir]
(let [file (io/file dir project-file)]
(when (.exists file)
(extract-deps (slurp file))))))
13 changes: 7 additions & 6 deletions src/antq/dep/github_action.clj
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@
(dec (count (.getAbsolutePath (io/file "."))))))

(defn load-deps
[]
(let [dir (io/file ".github" "workflows")]
(when (.isDirectory dir)
(->> (file-seq dir)
(filter #(.isFile %))
(mapcat #(extract-deps (slurp %) (relative-path %)))))))
([] (load-deps "."))
([dir]
(let [dir (io/file dir ".github" "workflows")]
(when (.isDirectory dir)
(->> (file-seq dir)
(filter #(.isFile %))
(mapcat #(extract-deps (slurp %) (relative-path %))))))))
10 changes: 6 additions & 4 deletions src/antq/dep/leiningen.clj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
(walk/prewalk (fn [form]
(cond
(keyword? form)
(reset! dep-form? (= :dependencies form))
(reset! dep-form? (#{:dependencies :plugins} form))

(and @dep-form?
(vector? form)
Expand All @@ -28,6 +28,8 @@
:version version}))))

(defn load-deps
[]
(when (.exists (io/file project-file))
(extract-deps (slurp project-file))))
([] (load-deps "."))
([dir]
(let [file (io/file dir project-file)]
(when (.exists file)
(extract-deps (slurp file))))))
8 changes: 5 additions & 3 deletions src/antq/dep/pom.clj
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
:version version})))))

(defn load-deps
[]
(when (.exists (io/file project-file))
(extract-deps (slurp project-file))))
([] (load-deps "."))
([dir]
(let [file (io/file dir project-file)]
(when (.exists file)
(extract-deps (slurp file))))))
8 changes: 5 additions & 3 deletions src/antq/dep/shadow.clj
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
:version version}))))

(defn load-deps
[]
(when (.exists (io/file project-file))
(extract-deps (slurp project-file))))
([] (load-deps "."))
([dir]
(let [file (io/file dir project-file)]
(when (.exists file)
(extract-deps (slurp file))))))
8 changes: 8 additions & 0 deletions src/antq/util/xml.clj
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,11 @@
(defn get-values
[content tags]
(map #(get-value content %) tags))

(defn get-attribute
[content tag attr]
(->> content
(filter (comp #{tag} :tag))
first
:attrs
attr))
22 changes: 19 additions & 3 deletions src/antq/ver.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
(ns antq.ver)
(ns antq.ver
(:require
[clojure.string :as str]))

(defmulti get-latest-version :type)
(def ^:private under-development-keywords
#{"alpha" "beta" "rc"})

(defmethod get-latest-version :default
(defn under-devleopment?
[s]
(if-let [l (and s (str/lower-case s))]
(some? (some #(str/includes? l %) under-development-keywords))
false))

(defn snapshot?
[s]
(if s
(str/includes? (str/lower-case s) "snapshot")
false))

(defmulti get-sorted-versions :type)
(defmethod get-sorted-versions :default
[dep]
(throw (ex-info "Unknown dependency type" dep)))
33 changes: 15 additions & 18 deletions src/antq/ver/github_action.clj
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
(ns antq.ver.github-action
(:require
[antq.util.ver :as u.ver]
[antq.util.xml :as u.xml]
[antq.ver :as ver]
[clojure.data.xml :as xml]
[cheshire.core :as json]
[clojure.string :as str]
[version-clj.core :as version]))

(defn releases-atom
(defn tag-api-url
[dep]
(format "https://github.com/%s/releases.atom"
(format "https://api.github.com/repos/%s/tags"
(str/join "/" (take 2 (str/split (:name dep) #"/")))))

(defn get-latest-version-by-url*
(defn get-sorted-versions-by-url*
[url]
(->> url
slurp
xml/parse-str
xml-seq
(filter (comp #{:entry} :tag))
(map #(u.ver/normalize-version (u.xml/get-value (:content %) :title)))
(filter u.ver/sem-ver?)
(sort version/version-compare)
last))
(-> url
slurp
(json/parse-string true)
(->> (map (comp u.ver/normalize-version :name))
(filter u.ver/sem-ver?)
(sort version/version-compare)
reverse)))

(def get-latest-version-by-url
(memoize get-latest-version-by-url*))
(def get-sorted-versions-by-url
(memoize get-sorted-versions-by-url*))

(defmethod ver/get-latest-version :github-action
(defmethod ver/get-sorted-versions :github-action
[dep]
(-> dep releases-atom get-latest-version-by-url))
(-> dep tag-api-url get-sorted-versions-by-url))
21 changes: 11 additions & 10 deletions src/antq/ver/java.clj
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,17 @@
{"central" "https://repo1.maven.org/maven2/"
"clojars" "https://repo.clojars.org/"})

(defn get-latest-version-by-name*
[name]
(ancient/latest-version-string!
name
{:repositories default-repos
:snapshots? false}))
(defn get-sorted-versions-by-name*
[name opts]
(map :version-string
(ancient/versions! name opts)))

(def get-latest-version-by-name
(memoize get-latest-version-by-name*))
(def get-sorted-versions-by-name
(memoize get-sorted-versions-by-name*))

(defmethod ver/get-latest-version :java
(defmethod ver/get-sorted-versions :java
[dep]
(-> dep :name get-latest-version-by-name))
(get-sorted-versions-by-name
(:name dep)
{:repositories default-repos
:snapshots? (ver/snapshot? (:version dep))}))

0 comments on commit c94fd7d

Please sign in to comment.