diff --git a/fserver.drush.inc b/fserver.drush.inc
index 99885a3..3493b50 100644
--- a/fserver.drush.inc
+++ b/fserver.drush.inc
@@ -22,15 +22,12 @@
function fserver_drush_command() {
$items = array();
$items['fserver-status'] = array(
- 'callback' => 'fserver_drush_status',
'description' => 'Determine the packaging status of a project.',
);
$items['fserver-package'] = array(
- 'callback' => 'fserver_drush_package',
'description' => 'Update packaging for a project.',
);
$items['fserver-distro'] = array(
- 'callback' => 'fserver_drush_distro',
'description' => 'Update packaging for a distribution.',
);
return $items;
@@ -53,7 +50,7 @@ function fserver_drush_help($section) {
/**
* Package new releases for a specified project or all.
*/
-function fserver_drush_package() {
+function drush_fserver_package() {
if (!drush_get_option('uri') && !drush_get_option('l')) {
drush_die('You must use the --uri option to specify the location of this site.');
}
@@ -94,7 +91,7 @@ function fserver_drush_package() {
/**
* Display project packaging status.
*/
-function fserver_drush_status() {
+function drush_fserver_status() {
$projects = _fserver_drush_get_projects();
// Filter the project list by the argument.
@@ -349,7 +346,7 @@ class FserverProject_git {
// Retrieve tag info
_drush_shell_exec_output_set(' '); // Clear output cache.
- drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git show {$vc}");
+ drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git --work-tree={$this->path} show {$vc}");
$info = drush_shell_exec_output();
if ($info[0] == "tag {$vc}") {
$info = implode("\n", $info);
@@ -381,7 +378,7 @@ class FserverProject_git {
// Create the directory if it doesn't exist.
if (file_check_directory($file_path, TRUE)) {
$vc = $tag['original'];
- drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git checkout {$vc}");
+ drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git --work-tree={$this->path} checkout {$vc}");
$this->FserverProject->write_package_info($tag, array('.git'));
drush_op('drush_shell_exec', "tar -Pcf - --exclude='.git' --transform='s,{$this->path},{$this->FserverProject->name},' {$this->path} | gzip > {$file_path}/{$base}.tgz");
@@ -564,7 +561,7 @@ function fserver_posix_groupname() {
return NULL;
}
-function fserver_drush_distro() {
+function drush_fserver_distro() {
if (!drush_get_option('version')) {
drush_die('No version supplied, please use --version to specify a version for your release.');
}
diff --git a/views/fserver-updatexml.tpl.php b/views/fserver-updatexml.tpl.php
index 60eb773..5827329 100644
--- a/views/fserver-updatexml.tpl.php
+++ b/views/fserver-updatexml.tpl.php
@@ -5,36 +5,26 @@
-
-
1
-
-
Projects
-
-
-
-
-
published
-
@@ -46,12 +36,10 @@
Security update
-
-
-
+
\ No newline at end of file
diff --git a/views/fserver_plugin_style_updatexml.inc b/views/fserver_plugin_style_updatexml.inc
index 9d27f5d..c33075c 100644
--- a/views/fserver_plugin_style_updatexml.inc
+++ b/views/fserver_plugin_style_updatexml.inc
@@ -95,6 +95,8 @@ class fserver_plugin_style_updatexml extends views_plugin_style {
}
}
}
+ // @TODO: need to correct the api version in project tag, if we have multiple api versions
+ // we need the key "all" instead of 5.x / 6.x / 7.x /...
// If this is a legacy project and has a redirect URL use it immediately.
if (!empty($project['redirect'])) {
@@ -112,6 +114,10 @@ class fserver_plugin_style_updatexml extends views_plugin_style {
$releases = array();
$project['recommended_major'] = '';
$project['supported_majors'] = array();
+
+ // Helper array for detecting multiple API Versions... (not the best way?)
+ $multiple_api_versions = array();
+
foreach ($vars['rows'] as $num => $row) {
foreach ($vars['options']['release'] as $element => $field) {
$alias = $fields[$field]->field_alias;
@@ -131,7 +137,15 @@ class fserver_plugin_style_updatexml extends views_plugin_style {
}
}
}
-
+
+ // manual mapping from project api field to release api field
+ $project_api_version_mapping = $fields[$vars['options']['project']['api_version']]->field_alias;
+ if(isset($row->{$project_api_version_mapping})) {
+ $releases[$num]['api_version'] = $fields[$vars['options']['project']['api_version']]->theme($row);
+ // add current version to helper array...
+ $multiple_api_versions[$releases[$num]['api_version']] = $releases[$num]['api_version'];
+ }
+
if ($releases[$num]['recommended']) {
// Use the first major version for the project major.
// The list is sorted by "major desc", this way the latest branch will be
@@ -144,7 +158,7 @@ class fserver_plugin_style_updatexml extends views_plugin_style {
}
// Version
- $releases[$num]['version'] = "{$project['api_version']}-{$releases[$num]['version_major']}.{$releases[$num]['version_patch']}";
+ $releases[$num]['version'] = "{$releases[$num]['api_version']}-{$releases[$num]['version_major']}.{$releases[$num]['version_patch']}";
if (!empty($releases[$num]['version_extra'])) {
$releases[$num]['version'] .= "-{$releases[$num]['version_extra']}";
}
@@ -158,8 +172,14 @@ class fserver_plugin_style_updatexml extends views_plugin_style {
// Download link
$releases[$num]['download_link'] = file_create_url($releases[$num]['download_link']);
}
+
sort($project['supported_majors']);
$project['supported_majors'] = implode(",", $project['supported_majors']);
+
+ // overwrite projects api version if we have multiple versions to "all"
+ if (count($multiple_api_versions) > 1) {
+ $project['api_version'] = 'all';
+ }
// Finalize
$vars['project'] = $project;