Skip to content

Instantly share code, notes, and snippets.

@rottenbytes
Forked from haoch/closure_pom.sh
Created July 2, 2014 15:17
Show Gist options
  • Save rottenbytes/9ed0e80d0b859d75d8d0 to your computer and use it in GitHub Desktop.
Save rottenbytes/9ed0e80d0b859d75d8d0 to your computer and use it in GitHub Desktop.
java -cp clojure.jar clojure.main -e "(use 'clojure.xml) (->> (java.io.File. \"pom.xml\") (clojure.xml/parse) (:content) (filter #(= (:tag %) :version)) (first) (:content) (first) (println))"
java -Xbootclasspath/a:scala-library.jar -cp scala-compiler.jar scala.tools.nsc.MainGenericRunner -e 'import scala.xml._; println((XML.load(new java.io.FileInputStream("pom.xml")) match { case <project>{children @ _*}</project> => for (i <- children if (i match { case <version>{children @ _*}</version> => true; case _ => false; })) yield i })(0) match { case <version>{Text(x)}</version> => x })'
perl -MXML::Simple -e'print XMLin("pom.xml")->{version}."\n"'
perl -e '$_ = join "", <>; m!<project[^>]*>.*\n(?: |\t)<version[^>]*>\s*([^<]+?)\s*</version>.*</project>!s and print "$1\n"' pom.xml
# solution 1
python -c "from xml.dom.minidom import parse;dom = parse('pom.xml');print [n for n in dom.getElementsByTagName('version') if n.parentNode == dom.childNodes[0]][0].toxml()" | sed -e "s/.*>\(.*\)<.*/\1/g"
# solution 2
python -c "from xml.dom.minidom import parse;dom = parse('pom.xml');print [i.childNodes.item(0).nodeValue for i in dom.firstChild.childNodes if i.nodeName == 'version'].pop()"
# solution 3
python -c "from xml.dom.minidom import parse;dom = parse('pom.xml');print [n.firstChild.data for n in dom.childNodes[0].childNodes if n.firstChild and n.tagName == 'version']"
java -Xbootclasspath/a:scala-library.jar -cp scala-compiler.jar scala.tools.nsc.MainGenericRunner -e 'import scala.xml._; println((XML.load(new java.io.FileInputStream("pom.xml")) match { case <project>{children @ _*}</project> => for (i <- children if (i match { case <version>{children @ _*}</version> => true; case _ => false; })) yield i })(0) match { case <version>{Text(x)}</version> => x })'
sed '/<dependencies>/,/<\/dependencies>/d;/<version>/!d;s/ *<\/\?version> *//g' pom.xml
xalan -xsl x.xsl -in pom.xml
xml2 < pom.xml | grep /project/version= | sed 's/.*=//'
xmlgrep --text_only '/project/version' pom.xml
echo -e 'setns x=http://maven.apache.org/POM/4.0.0\n cat //x:project/x:groupId/text()' | xmllint --shell pom.xml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment