diff --git a/README.md b/README.md index 595e83c9..d0d5fa0d 100644 --- a/README.md +++ b/README.md @@ -1245,6 +1245,11 @@ $ examples/which.clj rg /usr/local/Cellar/ripgrep/11.0.1/bin/rg ``` +### pom.xml version + +A script to retrieve the version from a `pom.xml` file. See +[examples/pom_version.clj](https://github.com/borkdude/babashka/blob/master/examples/pom_version.clj). Written by [@wilkerlucio](https://github.com/wilkerlucio). + ## Thanks - [adgoji](https://www.adgoji.com/) for financial support diff --git a/examples/pom_version.clj b/examples/pom_version.clj new file mode 100755 index 00000000..bd842e6f --- /dev/null +++ b/examples/pom_version.clj @@ -0,0 +1,22 @@ +#!/usr/bin/env bb + +(ns pom-version + {:author "Wilker Lucio"} + (:require [clojure.data.xml :as xml] + [clojure.string :as str])) + +(defn tag-name? [tag tname] + (some-> tag :tag name #{tname})) + +(defn tag-content-str [tag] + (->> tag :content (filter string?) (str/join ""))) + +(defn pom-version + ([] (pom-version "pom.xml")) + ([path] + (->> (xml-seq (xml/parse-str (slurp path))) + (filter #(tag-name? % "version")) + first + tag-content-str))) + +(pom-version) diff --git a/src/babashka/impl/clojure/core.clj b/src/babashka/impl/clojure/core.clj index c7e9452a..95938f55 100644 --- a/src/babashka/impl/clojure/core.clj +++ b/src/babashka/impl/clojure/core.clj @@ -31,4 +31,5 @@ 'time (with-meta time* {:sci/macro true}) 'Throwable->map (copy-core-var Throwable->map) 'compare-and-set! (copy-core-var compare-and-set!) - '*data-readers* (sci/new-dynamic-var '*data-readers* nil)}) + '*data-readers* (sci/new-dynamic-var '*data-readers* nil) + 'xml-seq (copy-core-var xml-seq)}) diff --git a/test/babashka/main_test.clj b/test/babashka/main_test.clj index e9b43336..d88115eb 100644 --- a/test/babashka/main_test.clj +++ b/test/babashka/main_test.clj @@ -376,7 +376,8 @@ (deftest clojure-data-xml-test (is (= "12" - (bb nil "(let [xml (xml/parse-str \"12\")] (xml/emit-str xml))")))) + (bb nil "(let [xml (xml/parse-str \"12\")] (xml/emit-str xml))"))) + (is (= "0.0.87-SNAPSHOT" (bb nil "examples/pom_version.clj" (.getPath (io/file "test-resources" "pom.xml")))))) (deftest uberscript-test (let [tmp-file (java.io.File/createTempFile "uberscript" ".clj")]