From 448a0b6829955fcf9c968c3413f2dc89748b8554 Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Sun, 10 Oct 2010 13:33:14 +0200 Subject: [PATCH 01/12] fixed multiple api version usage if path fserver/MACHINE_NAME/all --- views/fserver-updatexml.tpl.php | 14 +------------- views/fserver_plugin_style_updatexml.inc | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 15 deletions(-) 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 @@ <?php print $project['title'] ?> - - 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; From 6bc23111e82c437232e75e1d3e42ff4e13e8361f Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Mon, 15 Nov 2010 15:07:43 +0100 Subject: [PATCH 02/12] changed fixed callback names to new drush command hook system... wtf... --- fserver.drush.inc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fserver.drush.inc b/fserver.drush.inc index 99885a3..511430d 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. @@ -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.'); } From c93f44afce207fb99d366aeff104036b89c08993 Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Tue, 16 Nov 2010 14:01:56 +0100 Subject: [PATCH 03/12] added --work-tree={->path} to all git commands to prevent file creation in main paths... --- fserver.drush.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fserver.drush.inc b/fserver.drush.inc index 511430d..3493b50 100644 --- a/fserver.drush.inc +++ b/fserver.drush.inc @@ -346,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); @@ -378,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"); From 38f65f3965726f5bf2c27bfb554ab03f048d6db3 Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Tue, 16 Nov 2010 15:34:39 +0100 Subject: [PATCH 04/12] added changes from darthsteven / FeatureServer --- fserver.drush.inc | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/fserver.drush.inc b/fserver.drush.inc index 3493b50..0a3c580 100644 --- a/fserver.drush.inc +++ b/fserver.drush.inc @@ -345,23 +345,15 @@ class FserverProject_git { $this->init_wc(); // Retrieve tag info - _drush_shell_exec_output_set(' '); // Clear output cache. - drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git --work-tree={$this->path} show {$vc}"); + _drush_shell_exec_output_set(' '); // Clear output cache. + drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git log --work-tree={$this->path} -1 --pretty=format:%ct {$vc}"); $info = drush_shell_exec_output(); - if ($info[0] == "tag {$vc}") { - $info = implode("\n", $info); - $info = explode("\n\n", $info); - list($basic, $commit, $message) = $info; - - $basic = explode("\n", $basic); - array_shift($basic); // Removes tag line - array_shift($basic); // Removes author line - - // Set timestamp on the tag - $date = array_shift($basic); - $date = strtotime(trim(substr($date, strpos($date, ':') + 1))); - $tag['timestamp'] = is_numeric($date) ? $date : time(); - } + $tag['timestamp'] = $info[0]; + drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git tag -l {$vc} -n 1000"); + $info = drush_shell_exec_output(); + // Remove the tag from the first line of the message: + $info[0] = str_replace($vc, '', $info[0]); + $tag['message'] = implode("\n", $info); return $tag; } } From dd8808514cb9fbbc44003ef4dd3f2e826b46d0da Mon Sep 17 00:00:00 2001 From: druplates Date: Tue, 16 Nov 2010 17:32:17 +0100 Subject: [PATCH 05/12] #FIXED: escape %d (%%) in FserverProject_Git::get_tag() because drush uses sprintf for args --- fserver.drush.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fserver.drush.inc b/fserver.drush.inc index 0a3c580..a9d4f85 100644 --- a/fserver.drush.inc +++ b/fserver.drush.inc @@ -346,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 log --work-tree={$this->path} -1 --pretty=format:%ct {$vc}"); + drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git log -1 --pretty=format:%%ct {$vc}"); $info = drush_shell_exec_output(); $tag['timestamp'] = $info[0]; drush_op('drush_shell_exec', "git --git-dir={$this->path}/.git tag -l {$vc} -n 1000"); From 101559d1a363c2a6ba2244dcac6cf2ec0d4b4719 Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Sun, 16 Jan 2011 00:36:57 +0100 Subject: [PATCH 06/12] added packaging method and scm url to project release fees --- fserver.views_default.inc | 79 ++++++++++++++++++++++++ views/fserver-updatexml.tpl.php | 4 ++ views/fserver_plugin_style_updatexml.inc | 2 +- 3 files changed, 84 insertions(+), 1 deletion(-) diff --git a/fserver.views_default.inc b/fserver.views_default.inc index 2b9fcc4..31c6af2 100644 --- a/fserver.views_default.inc +++ b/fserver.views_default.inc @@ -1418,6 +1418,82 @@ function fserver_views_default_views() { 'field' => 'field_fserver_redirect_value', 'relationship' => 'field_fserver_project_nid', ), + 'field_fserver_method_value' => array( + 'label' => 'Packaging method', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'link_class' => '', + 'alt' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'link_to_node' => 0, + 'label_type' => 'widget', + 'format' => 'default', + 'multiple' => array( + 'group' => TRUE, + 'multiple_number' => '', + 'multiple_from' => '', + 'multiple_reversed' => FALSE, + ), + 'exclude' => 0, + 'id' => 'field_fserver_method_value', + 'table' => 'node_data_field_fserver_method', + 'field' => 'field_fserver_method_value', + 'relationship' => 'field_fserver_project_nid', + ), + 'field_fserver_repository_value' => array( + 'label' => 'Repository URL', + 'alter' => array( + 'alter_text' => 0, + 'text' => '', + 'make_link' => 0, + 'path' => '', + 'link_class' => '', + 'alt' => '', + 'prefix' => '', + 'suffix' => '', + 'target' => '', + 'help' => '', + 'trim' => 0, + 'max_length' => '', + 'word_boundary' => 1, + 'ellipsis' => 1, + 'html' => 0, + 'strip_tags' => 0, + ), + 'empty' => '', + 'hide_empty' => 0, + 'empty_zero' => 0, + 'link_to_node' => 0, + 'label_type' => 'widget', + 'format' => 'default', + 'multiple' => array( + 'group' => TRUE, + 'multiple_number' => '', + 'multiple_from' => '', + 'multiple_reversed' => FALSE, + ), + 'exclude' => 0, + 'id' => 'field_fserver_repository_value', + 'table' => 'node_data_field_fserver_repository', + 'field' => 'field_fserver_repository_value', + 'relationship' => 'field_fserver_project_nid', + ), )); $handler->override_option('sorts', array( 'release_tag' => array( @@ -1576,6 +1652,8 @@ function fserver_views_default_views() { 'link' => 'nid', 'type' => 'field_fserver_type_value', 'redirect' => 'field_fserver_redirect_value', + 'scmtype' => 'field_fserver_method_value', + 'scmurl' => 'field_fserver_repository_value', ), 'release' => array( 'version_major' => 'field_fserver_versionmajor_value', @@ -1604,6 +1682,7 @@ function fserver_views_default_views() { 'title' => '', 'description' => '', 'weight' => 0, + 'name' => 'navigation', )); $handler->override_option('displays', array()); $handler->override_option('sitename_title', FALSE); diff --git a/views/fserver-updatexml.tpl.php b/views/fserver-updatexml.tpl.php index 5827329..9867842 100644 --- a/views/fserver-updatexml.tpl.php +++ b/views/fserver-updatexml.tpl.php @@ -16,6 +16,10 @@ + + + + diff --git a/views/fserver_plugin_style_updatexml.inc b/views/fserver_plugin_style_updatexml.inc index c33075c..99892cf 100644 --- a/views/fserver_plugin_style_updatexml.inc +++ b/views/fserver_plugin_style_updatexml.inc @@ -5,7 +5,7 @@ class fserver_plugin_style_updatexml extends views_plugin_style { * List of project XML elements. */ private function project_elements() { - return array('title', 'short_name', 'api_version', 'link', 'type', 'redirect'); + return array('title', 'short_name', 'api_version', 'link', 'type', 'redirect', 'scmtype', 'scmurl'); } /** From 12b331e73ca83963bde9077ae233c951a69c6cb2 Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Sun, 16 Jan 2011 23:03:24 +0100 Subject: [PATCH 07/12] changed scm to sourcecode naming --- views/fserver-updatexml.tpl.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/fserver-updatexml.tpl.php b/views/fserver-updatexml.tpl.php index 9867842..af9a5bb 100644 --- a/views/fserver-updatexml.tpl.php +++ b/views/fserver-updatexml.tpl.php @@ -16,10 +16,10 @@ - + - + @@ -46,4 +46,4 @@ - \ No newline at end of file + From 8e8ce3022984288e356778263cde5dd3dcd36e6a Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Sun, 16 Jan 2011 23:29:37 +0100 Subject: [PATCH 08/12] added alter to fserver_cck_options --- fserver.module | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/fserver.module b/fserver.module index 1ae2f64..5fef2fb 100644 --- a/fserver.module +++ b/fserver.module @@ -97,32 +97,32 @@ function fserver_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { function fserver_cck_options($type = 'core') { switch ($type) { case 'core': - return drupal_map_assoc(array('5.x', '6.x', '7.x')); + $result = drupal_map_assoc(array('5.x', '6.x', '7.x')); case 'major': $major = range(0, 50); unset($major[0]); - return $major; + $result = $major; case 'method': - return array( + $result = array( 0 => t('Manual upload'), 'git' => t('GIT repository tags'), 'svn' => t('SVN repository tags folder'), ); case 'patch': - return range(0, 50); + $result = range(0, 50); case 'recommended': - return array(t('Not recommended'), t('Recommended')); + $result = array(t('Not recommended'), t('Recommended')); case 'security': - return array(t('Not a security release'), t('Security release')); + $result = array(t('Not a security release'), t('Security release')); case 'type': // We don't use t() here as the update XML requires these strings to be uniform. - return array( + $result = array( // 'core' => 'Drupal project', 'profile' => 'Installation profiles', 'module' => 'Modules', @@ -131,6 +131,10 @@ function fserver_cck_options($type = 'core') { // 'translation' => 'Translations', ); } + + drupal_alter('fserver_cck_options', $result, $type); + + return $result; } /** From 7b52a6a276c6909cf732410d53700bb7b0fa6078 Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Mon, 17 Jan 2011 00:14:12 +0100 Subject: [PATCH 09/12] changed name convention from svm to sourcecode --- views/fserver-updatexml.tpl.php | 4 ++-- views/fserver_plugin_style_updatexml.inc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/views/fserver-updatexml.tpl.php b/views/fserver-updatexml.tpl.php index af9a5bb..834a713 100644 --- a/views/fserver-updatexml.tpl.php +++ b/views/fserver-updatexml.tpl.php @@ -17,8 +17,8 @@ - - + + diff --git a/views/fserver_plugin_style_updatexml.inc b/views/fserver_plugin_style_updatexml.inc index 99892cf..04c71fc 100644 --- a/views/fserver_plugin_style_updatexml.inc +++ b/views/fserver_plugin_style_updatexml.inc @@ -5,7 +5,7 @@ class fserver_plugin_style_updatexml extends views_plugin_style { * List of project XML elements. */ private function project_elements() { - return array('title', 'short_name', 'api_version', 'link', 'type', 'redirect', 'scmtype', 'scmurl'); + return array('title', 'short_name', 'api_version', 'link', 'type', 'redirect', 'sourcecode_type', 'sourcecode_uri'); } /** From bcc8ad37a96ec49166ed3dc75f843484b23763a9 Mon Sep 17 00:00:00 2001 From: blackice2999 Date: Mon, 17 Jan 2011 00:16:05 +0100 Subject: [PATCH 10/12] recreate feature... --- fserver.info | 2 +- fserver.views_default.inc | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/fserver.info b/fserver.info index 93115b8..e0211ff 100644 --- a/fserver.info +++ b/fserver.info @@ -37,6 +37,6 @@ features[views][] = "fserver_projects" features[views][] = "fserver_release_lookup" features[views][] = "fserver_releases" features[views][] = "fserver_updates" -features[views_api][] = "api:3.0-alpha1" +features[views_api][] = "api:2" name = "Feature Server" package = "Features" diff --git a/fserver.views_default.inc b/fserver.views_default.inc index 31c6af2..037db2c 100644 --- a/fserver.views_default.inc +++ b/fserver.views_default.inc @@ -142,6 +142,7 @@ function fserver_views_default_views() { 'title' => '', 'description' => '', 'weight' => 0, + 'name' => 'navigation', )); $views[$view->name] = $view; @@ -895,6 +896,7 @@ function fserver_views_default_views() { 'title' => '', 'description' => '', 'weight' => 0, + 'name' => 'navigation', )); $views[$view->name] = $view; @@ -1652,8 +1654,8 @@ function fserver_views_default_views() { 'link' => 'nid', 'type' => 'field_fserver_type_value', 'redirect' => 'field_fserver_redirect_value', - 'scmtype' => 'field_fserver_method_value', - 'scmurl' => 'field_fserver_repository_value', + 'sourcecode_type' => 'field_fserver_method_value', + 'sourcecode_uri' => 'field_fserver_repository_value', ), 'release' => array( 'version_major' => 'field_fserver_versionmajor_value', From 067ed2522c6e7a2bf6662193be3ec6e9314888ca Mon Sep 17 00:00:00 2001 From: Eugen Mayer Date: Mon, 17 Jan 2011 02:07:07 +0100 Subject: [PATCH 11/12] fixing missin breaks --- fserver.module | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fserver.module b/fserver.module index 5fef2fb..69fbe5c 100644 --- a/fserver.module +++ b/fserver.module @@ -98,28 +98,28 @@ function fserver_cck_options($type = 'core') { switch ($type) { case 'core': $result = drupal_map_assoc(array('5.x', '6.x', '7.x')); - + break; case 'major': $major = range(0, 50); unset($major[0]); $result = $major; - + break; case 'method': $result = array( 0 => t('Manual upload'), 'git' => t('GIT repository tags'), 'svn' => t('SVN repository tags folder'), ); - + break; case 'patch': $result = range(0, 50); - + break; case 'recommended': $result = array(t('Not recommended'), t('Recommended')); - + break; case 'security': $result = array(t('Not a security release'), t('Security release')); - + break; case 'type': // We don't use t() here as the update XML requires these strings to be uniform. $result = array( From 541d8cc82ec00070606d11dec4a899bb74c7bec5 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 8 Feb 2011 13:12:23 +0100 Subject: [PATCH 12/12] fixing wrong regexp for .info file scanning for packaging --- fserver.drush.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fserver.drush.inc b/fserver.drush.inc index a9d4f85..8c66322 100644 --- a/fserver.drush.inc +++ b/fserver.drush.inc @@ -273,7 +273,7 @@ class FserverProject { $packaging[] = "version = \"{$tag['version']}\""; $packaging = "\n" . implode("\n", $packaging); - $files = file_scan_directory($this->backend->path, '.info', $exclude_mask); + $files = file_scan_directory($this->backend->path, '.info$', $exclude_mask); foreach ($files as $path => $file) { // @TODO: Parse the info file or not? $info_file = file_get_contents($file->filename);