aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2019-09-18 21:47:06 +0200
committerMarc Alexander <admin@m-a-styles.de>2019-09-18 21:49:07 +0200
commit28ff362ec07b2d9fcef142460a34c999ee1d452a (patch)
tree46e6fa988f8064c6328d6630f09eef40e75ece8b
parentMerge pull request #5666 from mrgoldy/ticket/16084 (diff)
downloadphpbb-28ff362ec07b2d9fcef142460a34c999ee1d452a.tar.gz
phpbb-28ff362ec07b2d9fcef142460a34c999ee1d452a.tar.bz2
phpbb-28ff362ec07b2d9fcef142460a34c999ee1d452a.zip
[ticket/16160] Add script for generating package json file
PHPBB3-16160
-rw-r--r--build/generate_package_json.php128
1 files changed, 128 insertions, 0 deletions
diff --git a/build/generate_package_json.php b/build/generate_package_json.php
new file mode 100644
index 0000000000..ed9341fa14
--- /dev/null
+++ b/build/generate_package_json.php
@@ -0,0 +1,128 @@
+#!/usr/bin/env php
+<?php
+/**
+ *
+ * This file is part of the phpBB Forum Software package.
+ *
+ * @copyright (c) phpBB Limited <https://www.phpbb.com>
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * For full copyright and license information, please see
+ * the docs/CREDITS.txt file.
+ *
+ */
+
+if (version_compare(PHP_VERSION, '7.0-dev', '<'))
+{
+ die('generate_package_json.php requires at least PHP 7.0.');
+}
+
+define('IN_PHPBB', true);
+include_once('../phpBB/includes/functions.php');
+
+$json_data = new \stdClass();
+$json_data->metadata = new class
+{
+ public $current_version_date;
+ public $current_version;
+ public $download_path;
+ public $show_update_package = true;
+ public $historic = false;
+};
+
+$json_data->package = [];
+
+// Open build.xml
+$build_xml = simplexml_load_file('build.xml');
+$current_version = (string) $build_xml->xpath('/project/property[@name=\'newversion\']/@value')[0]->value;
+$previous_version = (string) $build_xml->xpath('/project/property[@name=\'prevversion\']/@value')[0]->value;
+$older_verions = explode(', ', (string) $build_xml->xpath('/project/property[@name=\'olderversions\']/@value')[0]->value);
+
+// Clean and sort version info
+$older_verions[] = $previous_version;
+$older_verions = array_filter($older_verions, function($version) {
+ preg_match(get_preg_expression('semantic_version'), $version, $matches);
+ return empty($matches['prerelease']) || strpos($matches['prerelease'], 'pl') !== false;
+});
+usort($older_verions, function($version_a, $version_b)
+{
+ return phpbb_version_compare($version_b, $version_a);
+});
+
+// Set metadata
+$json_data->metadata->current_version = $current_version;
+$json_data->metadata->current_version_date = date('Y-m-d');
+$json_data->metadata->download_path = 'https://download.phpbb.com/pub/release/' . preg_replace('#([0-9]+\.[0-9]+)(\..+)#', '$1', $current_version) . '/' . $current_version;
+
+// Add package, patch files, and changed files
+phpbb_add_package_file(
+ $json_data->package,
+ 'phpBB ' . $current_version,
+ 'phpBB-' . $current_version,
+ 'full',
+ ''
+);
+phpbb_add_package_file(
+ $json_data->package,
+ 'phpBB ' . $current_version . ' Patch Files',
+ 'phpBB-' . $current_version . '-patch',
+ 'update',
+ 'patch'
+);
+phpbb_add_package_file(
+ $json_data->package,
+ 'phpBB ' . $current_version . ' Changed Files',
+ 'phpBB-' . $current_version . '-files',
+ 'update',
+ 'files'
+);
+
+// Loop through packages and assign to packages array
+foreach ($older_verions as $version)
+{
+ phpbb_add_package_file(
+ $json_data->package,
+ 'phpBB ' . $version . ' to ' . $current_version . ' Update Package',
+ 'phpBB-' . $version . '_to_' . $current_version,
+ 'update',
+ 'update',
+ $version
+ );
+}
+
+echo(json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n");
+
+function phpbb_add_package_file(array &$package_list, string $name, string $file_name, string $type, string $subtype, string $from = '')
+{
+ if (!file_exists(__DIR__ . '/new_version/release_files/' . $file_name . '.zip'))
+ {
+ trigger_error('File does not exist: ' . __DIR__ . '/new_version/release_files/' . $file_name . '.zip');
+ return;
+ }
+
+ $package_file = new stdClass();
+ $package_file->name = $name;
+ $package_file->filename = $file_name;
+ $package_file->type = $type;
+ if (!empty($subtype))
+ {
+ $package_file->subtype = $subtype;
+ }
+ if (!empty($from))
+ {
+ $package_file->from = $from;
+ }
+ $package_file->files = [];
+
+ foreach (['zip', 'tar.bz2'] as $extension)
+ {
+ $file_path = 'new_version/release_files/' . $file_name . '.' . $extension;
+ $filedata = new stdClass();
+ $filedata->filesize = filesize($file_path);
+ $filedata->checksum = trim(preg_replace('/(^\w+)(.+)/', '$1', file_get_contents($file_path . '.sha256')));
+ $filedata->filetype = $extension;
+ $package_file->files[] = $filedata;
+ }
+
+ $package_list[] = $package_file;
+}