nokogiri習作 antのビルドファイルの概要を出力
出力結果
targetとコメントを抽出
ruby buildxmltarget.rb apache-tomcat-6.0.18-src/build.xml build-prepare [] compile [] Compile internal server components Copy static resource files build-only [build-prepare,compile,package] package [] Common Annotations 1.0 JAR File Servlet 2.5 Implementation JAR File JSP 2.1 Implementation JAR File JSP 2.1 EL Implementation JAR File Bootstrap JAR File Tomcat-juli JAR File Catalina Main JAR File Catalina GroupCom/Tribes JAR File Catalina Cluster/HA JAR File Catalina Ant Tasks JAR File Protocol handlers - Coyote Jasper Implementation JAR File Jasper EL Implementation JAR File i18n JARs build-docs [] XSL processing Print friendly version deploy [build-only,build-docs] Copy scripts Copy static resource files Copy other regular webapps Build classes for examples webapp Add sources for examples clean-depend [] Clean depend src components clean [] proxyflags [] check proxy parameters. setproxy [proxyflags] testexist [] downloadgz [setproxy,testexist] Download and extract the package downloadzip [setproxy,testexist] Download and extract the package downloadfile [setproxy,testexist] Download extract the file download [] Builds and download dependent components Build Tomcat DBCP bundle Build Jasper JDT bundle build-tomcat-dbcp [] build-jasper-jdt []
ruby buildxmltarget.rb apache-tomcat-6.0.18-src/dist.xml build-webapps-precompile [] Precompile webapps JSPC fix-webapps [] Extra build steps for webapps Add release notes to the root webapp Add documents to the tomcat-docs webapp Build JARs for webapps classes Add XML declarations for admin, manager and balancer clean [] Clean all components dist-prepare [] dist-static [dist-prepare] Copy the top-level documentation files Copy the contents of each "build" directory Correct permissions and line endings on "bin" scripts dist-javadoc [dist-source] Create the Tomcat javadoc dist-deployer [] Create the Tomcat deployer binary Servlet and JSP Digester and dependencies Main build script Copy deployer documentation dist-source [] Tomcat source installer [] Create Windows installer release [clean,dist-static,dist-deployer,installer,package-zip,package-tgz,package-deployer-zip,package-deployer-tgz,dist-source,dist-javadoc,package-docs-tgz,package-src-zip,package-src-tgz] Create a Tomcat 6 packaged distribution package-zip [] package-deployer-zip [] package-admin-zip [] package-tgz [] package-deployer-tgz [] package-admin-tgz [] package-docs-tgz [] Package gocs package-src-zip [] package-src-tgz []
ruby buildxmltarget.rb apache-tomcat-6.0.18-src/extras.xml prepare [] clean [] commons-logging [] webservices [] Classpath Compile internal server components Catalina Main JAR File extras [prepare,commons-logging,webservices] proxyflags [] check proxy parameters. setproxy [proxyflags] testexist [] downloadfile [setproxy,testexist] Download extract the file
スクリプト
require 'rubygems' require 'nokogiri' if ARGV.length != 1 STDERR.puts "Usage: #{$0} ant-build-file" end buildxml = Nokogiri::XML(File.read(ARGV[0])) targets = Array.new buildxml.search("project").first.children.each do |child| if child.name == 'target' comments = Array.new child.children.each do |c| comments << c if c.name == "comment" end targets << [child, comments] end end targets.each do |pair| target = pair[0] print "#{target.get_attribute('name')} [#{target.get_attribute('depends')}]" print " #{target.get_attribute('description')}" if target.has_attribute?('description') puts pair[1].each do |c| next if c.text.include?("\n") puts " #{c.text}" end end