Version matrix
Signed-off-by: Eike Stepper <stepper@esc-net.de>
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 98d8a5a..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-logs
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..333c1e9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+logs/
diff --git a/downloads/.gitignore b/downloads/.gitignore
new file mode 100644
index 0000000..df92cc8
--- /dev/null
+++ b/downloads/.gitignore
@@ -0,0 +1 @@
+drops/
diff --git a/downloads/versions.php b/downloads/versions.php
index a491842..71b8347 100644
--- a/downloads/versions.php
+++ b/downloads/versions.php
@@ -3,28 +3,199 @@
header( 'Cache-control: no cache' );
-$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="' . $pageFolderPath . '/styles.css" media="screen"/>' . "\n\t");
+$local = true;
+if ($local)
+{
+ $drops = "C:/develop/git/cdo.www/downloads/drops";
+ $archive = null;
+}
+else
+{
+ $drops = "/home/data/httpd/download.eclipse.org/modeling/emf/cdo/drops";
+ $archive = "/home/data/httpd/archive.eclipse.org/modeling/emf/cdo/drops";
+
+ $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="' . $pageFolderPath . '/styles.css" media="screen"/>' . "\n\t");
+}
$pageAuthor = "Eike Stepper";
print '<div id="midcolumn">' . "\n";
print '<h1>Versions</h1>';
-if ($handle = opendir("/home/data/httpd/download.eclipse.org/modeling/emf/cdo/drops"))
+$releases = [];
+$bundles = [];
+
+if ($handle = opendir($drops))
{
- while (false !== ($entry = readdir($handle)))
+ while (false !== ($drop = readdir($handle)))
{
- if (str_starts_with($entry, "R"))
+ if (startsWith($drop, "R"))
{
- echo "$entry\n";
+ $folder = $drops;
+
+ $webPropertiesFile = "$folder/$drop/web.properties";
+ if (!file_exists($webPropertiesFile))
+ {
+ if ($archive == null)
+ {
+ continue;
+ }
+
+ $folder = $archive;
+
+ $webPropertiesFile = "$folder/$drop/web.properties";
+ if (!file_exists($webPropertiesFile))
+ {
+ continue;
+ }
+ }
+
+ {
+ $webProperties = parse_ini_file($webPropertiesFile);
+ $release = $webProperties['web.label'];
+
+ $buildInfoXml = simplexml_load_file("$folder/$drop/build-info.xml");
+ $train = (string) $buildInfoXml['train'];
+ $eclipse = (string) $buildInfoXml['eclipse'];
+ $emf = (string) $buildInfoXml['emf'];
+ $commit = (string) $buildInfoXml['revision'];
+ $versions = [];
+
+ $indexXml = simplexml_load_file("$folder/$drop/index.xml");
+ foreach ($indexXml->element as $element)
+ {
+ if ($element['type'] == "osgi.bundle")
+ {
+ $bundle = $element['name'];
+ if (startsWith($bundle, "org.eclipse.") &&
+ !endsWith($bundle, ".source") &&
+ !contains($bundle, ".examples") &&
+ !contains($bundle, ".buddies") &&
+ !contains($bundle, ".jms") &&
+ !contains($bundle, ".tests"))
+ {
+ $version = (string) $element['version'];
+ $versions += ["$bundle" => $version];
+ }
+ }
+ }
+
+ $releases += ["$release" => array(
+ "drop" => $drop,
+ "commit" => $commit,
+ "train" => $train,
+ "eclipse" => $eclipse,
+ "emf" => $emf,
+ "versions" => $versions)];
+
+ $bundles = array_merge($bundles, $versions);
+ }
}
}
closedir($handle);
}
+$releases = array_reverse($releases);
+
+$bundles = array_keys($bundles);
+natsort($bundles);
+$bundles = array_values($bundles);
+
+
+print "<table border='1'>\n";
+print " <tr>\n";
+print " <th> </th>\n";
+
+foreach ($releases as $release => $info)
+{
+ $drop = $info["drop"];
+ print " <th><h3><a href=\"http://download.eclipse.org/modeling/emf/cdo/drops/$drop\">CDO $release</a></h3></th>\n";
+}
+
+print " </tr>\n";
+
+headLine($releases, "Drop", "drop");
+headLine($releases, "Commit", "commit");
+headLine($releases, "Simrel", "train");
+headLine($releases, "Eclipse", "eclipse");
+headLine($releases, "EMF", "emf");
+
+foreach ($bundles as $bundle)
+{
+ print " <tr>\n";
+ print " <td>$bundle</td>\n";
+
+ foreach ($releases as $release => $info)
+ {
+ $versions = $info["versions"];
+ if (isset($versions[$bundle]))
+ {
+ $version = $versions[$bundle];
+ $file = $bundle . "_" . $version . ".jar";
+ print " <td align='center'><a href=\"http://download.eclipse.org/modeling/emf/cdo/drops/$drop/plugins/$file\" title=\"CDO $release → $file\">" . simpleVersion($version) . "</a></td>\n";
+ }
+ else
+ {
+ print " <td> </td>\n";
+ }
+ }
+
+ print " </tr>\n";
+}
+
+print "</table>\n";
print '</div>';
+function headLine($releases, $label, $field)
+{
+ print " <tr>\n";
+ print " <th>$label</th>\n";
+
+ foreach ($releases as $release => $info)
+ {
+ $value = $info[$field];
+
+ if ($field === "commit")
+ {
+ $value = substr($value, 0, 7);
+ }
+
+ print " <th>$value</th>\n";
+ }
+
+ print " </tr>\n";
+}
+
+function simpleVersion($version)
+{
+ $segments = explode(".", $version);
+ return "$segments[0].$segments[1].$segments[2]";
+}
+
+function contains($haystack, $needle)
+{
+ return strpos($haystack, $needle) !== false;
+}
+
+function startsWith($haystack, $needle)
+{
+ $length = strlen($needle);
+ return substr($haystack, 0, $length) === $needle;
+}
+
+function endsWith($haystack, $needle)
+{
+ $length = strlen($needle);
+ if (!$length)
+ {
+ return true;
+ }
+
+ return substr($haystack, -$length) === $needle;
+}
+
+
########################################################################
include "$areaRoot/_footer.php"; ?>