Merge pull request #2220 from rymndhng/add-deploy-classifier

Infer classifier when deploying adhoc files
This commit is contained in:
Jean Niklas L'orange 2016-11-05 12:22:17 +01:00 committed by GitHub
commit 6e83ea2651
5 changed files with 47 additions and 3 deletions

View file

@ -155,6 +155,16 @@
"pom" "pom"
(last (.split f "\\."))))) (last (.split f "\\.")))))
(defn classifier
"The classifier is be located between the version and extension name of the artifact.
See http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploying-with-classifiers.html "
[version f]
(let [pattern (re-pattern (format "%s-(.*)\\.%s" version (extension f)))
[_ classifier-of] (re-find pattern f)]
(when-not (empty? classifier-of)
classifier-of)))
(defn- fail-on-empty-project [project] (defn- fail-on-empty-project [project]
(when-not (:root project) (when-not (:root project)
(main/abort "Couldn't find project.clj, which is needed for deploy task"))) (main/abort "Couldn't find project.clj, which is needed for deploy task")))
@ -213,7 +223,8 @@ be able to depend on jars that are deployed without a pom."
group-id (namespace identifier) group-id (namespace identifier)
repo (repo-for project repository) repo (repo-for project repository)
artifacts (for [f files] artifacts (for [f files]
[[:extension (extension f)] f])] [[:extension (extension f)
:classifier (classifier version f)] f])]
(main/debug "Deploying" files "to" repo) (main/debug "Deploying" files "to" repo)
(aether/deploy (aether/deploy
:coordinates [(symbol group-id artifact-id) version] :coordinates [(symbol group-id artifact-id) version]

View file

@ -3,7 +3,8 @@
[clojure.java.io :only [file]] [clojure.java.io :only [file]]
[leiningen.deploy] [leiningen.deploy]
[leiningen.test.helper :only [delete-file-recursively [leiningen.test.helper :only [delete-file-recursively
tmp-dir sample-project]])) tmp-dir sample-project
sample-deploy-project]]))
(defn- repo-path (defn- repo-path
[relative-repo-path] [relative-repo-path]
@ -45,6 +46,21 @@
repo-path repo-url)}}) repo-path repo-url)}})
"deploy-only-repo"))) "deploy-only-repo")))
(deftest ^:online test-deploy-classifier
(testing "deployment with explicit file names uploads classifiers to repo"
(let [deploy-dir (repo-path "deploy-classifier")
project (assoc sample-deploy-project
:deploy-repositories
{"snapshots" {:url (repo-url deploy-dir)}})]
(delete-file-recursively deploy-dir :silently)
(deploy project "snapshots"
"deploy-me/deploy-me"
(:version project)
(str (:root project) "/deploy-me-0.1.0-SNAPSHOT-fat.jarr"))
(let [dir (file deploy-dir "deploy-me/deploy-me/0.1.0-SNAPSHOT/")
files (.list dir)]
(is (seq (filter #(re-find #"deploy-me-0.1.0-[\d.]+-\d+-fat.jarr$" %) files)))))))
(deftest signing (deftest signing
(testing "GPG invocation" (testing "GPG invocation"
(is (= (signing-args "foo.jar" nil) (is (= (signing-args "foo.jar" nil)
@ -67,4 +83,12 @@
(testing "Fail if project data is missing" (testing "Fail if project data is missing"
(is (thrown? clojure.lang.ExceptionInfo (deploy nil)))) (is (thrown? clojure.lang.ExceptionInfo (deploy nil))))
(testing "Fail if project data is missing" (testing "Fail if project data is missing"
(is (thrown? clojure.lang.ExceptionInfo (deploy nil "snapshots"))))) (is (thrown? clojure.lang.ExceptionInfo (deploy nil "snapshots")))))
(deftest classifiying
(are [expected version file] (= expected (classifier version file))
"fat" "1.2.3" "some-project-1.2.3-fat.jar"
"fat" "1.2.3-alpha6" "some-project-1.2.3-alpha6-fat.jar"
"fat" "1.2.3-SNAPSHOT" "some-project-1.2.3-SNAPSHOT-fat.jar"
nil "1.2.3" "some-project-1.2.3-.jar"
nil "1.2.3" "some-project-1.2.3.jar"))

View file

@ -50,6 +50,8 @@
(def sample-fixture-error-project (read-test-project "sample-fixture-error")) (def sample-fixture-error-project (read-test-project "sample-fixture-error"))
(def sample-deploy-project (read-test-project "sample-deploy"))
(def tricky-name-project (read-test-project "tricky-name")) (def tricky-name-project (read-test-project "tricky-name"))
(def native-project (read-test-project "native")) (def native-project (read-test-project "native"))

View file

@ -0,0 +1 @@
I am a teapot!

View file

@ -0,0 +1,6 @@
(defproject deploy-me "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]])