You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ds...@apache.org on 2009/09/18 17:47:02 UTC

svn commit: r816682 - in /felix/trunk/sigil: bldcommon/updatesite.groovy build.xml

Author: dsavage
Date: Fri Sep 18 15:47:02 2009
New Revision: 816682

URL: http://svn.apache.org/viewvc?rev=816682&view=rev
Log:
use groovy script to generate update site.xml (FELIX-1597)

Added:
    felix/trunk/sigil/bldcommon/updatesite.groovy
Modified:
    felix/trunk/sigil/build.xml

Added: felix/trunk/sigil/bldcommon/updatesite.groovy
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/bldcommon/updatesite.groovy?rev=816682&view=auto
==============================================================================
--- felix/trunk/sigil/bldcommon/updatesite.groovy (added)
+++ felix/trunk/sigil/bldcommon/updatesite.groovy Fri Sep 18 15:47:02 2009
@@ -0,0 +1,49 @@
+import java.util.jar.JarFile
+
+def processFeature(file,writer) {
+  def jar = new JarFile(file)
+
+  if (jar.getEntry( "feature.xml" ) != null) {
+    def path = 'features/' + file.getName()
+    def attrs = jar.getManifest().getMainAttributes()
+
+    def id = attrs.getValue('Bundle-SymbolicName')
+    def version = attrs.getValue('Bundle-Version')
+
+    writer.println( '  <feature url="' + path + '" id="' + id + '" version="' + version + '">' )
+    writer.println( '    <category name="Sigil"/>')
+    writer.println( '  </feature>' )
+  }
+
+  jar.close()
+}
+
+def findJars(dir,closure) {
+  dir.eachFileRecurse() { f ->
+    if (f ==~ /.*jar$/) closure( f )
+  }
+}
+
+
+def generateUpdateSite(dir,site) {
+  def writer = new PrintWriter( site )
+  writer.println('<site>')
+
+  findJars( dir, { f -> processFeature( f, writer ) } )
+
+  writer.println('  <category-def name="Sigil" label="Sigil-Core"> ')
+  writer.println('    <description>')
+  writer.println('      Sigil is an SDK for developing OSGi applications')
+  writer.println('    </description>')
+  writer.println('  </category-def>')
+  writer.println('</site>')
+
+  writer.close()
+}
+
+args.each{ ant.echo(message:it) }
+
+def dir = new File( args[0] )
+def site = new File( args[1] )
+
+generateUpdateSite(dir, site)

Modified: felix/trunk/sigil/build.xml
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/build.xml?rev=816682&r1=816681&r2=816682&view=diff
==============================================================================
--- felix/trunk/sigil/build.xml (original)
+++ felix/trunk/sigil/build.xml Fri Sep 18 15:47:02 2009
@@ -18,8 +18,11 @@
   under the License.
 -->
 <project name="sigil" default="dist" 
-  xmlns:ivy="antlib:org.apache.ivy.ant">
+  xmlns:ivy="antlib:org.apache.ivy.ant"
+  xmlns:groovy="antlib:org.codehaus.groovy">
+
   <import file="bldcommon/common.xml"/>
+
   <fileset id="my.projects" dir="${basedir}">
     <exclude name="ivy/resolver/test/**/${build_xml}"/>
     <exclude name="ivy/resolver/example/**/${build_xml}"/>
@@ -35,12 +38,11 @@
 
   <target name="clean" depends="clean-list, clean-site" />
 
-  <target name="build" depends="build-list" />
+  <target name="build" depends="init, build-list" />
 
   <target name="report" depends="report-list" />
 
-  <target name="site" depends="common-init">
-    <copy file="eclipse/updatesite/site.xml" todir="${site.dir}" />
+  <target name="site" depends="bldcommon.init">
     <!-- eclipse features -->
     <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.core.feature" revision="latest.integration" inline="true" pattern="${site.dir}/features/[artifact]_${buildVersion}.[ext]" transitive="false"/>
     <ivy:retrieve organisation="org.apache" module="felix.sigil.eclipse.obr.feature" revision="latest.integration" inline="true" pattern="${site.dir}/features/[artifact]_${buildVersion}.[ext]" transitive="false"/>
@@ -66,6 +68,11 @@
     
     <!-- ivy -->
     <ivy:retrieve organisation="org.apache" module="felix.sigil.ivy.resolver" revision="latest.integration" inline="true" pattern="${site.dir}/ivy/[artifact].[ext]" transitive="false"/>
+
+    <groovy:groovy src="bldcommon/updatesite.groovy">
+      <arg value="${site.dir}/features"/>
+      <arg value="${site.dir}/site.xml" />
+    </groovy:groovy>
   </target>
 
   <target name="clean-site">