mirror of
https://github.com/phpbb/phpbb.git
synced 2025-01-17 14:18:24 +01:00
e86daaede6
PHPBB3-16972
128 lines
3.8 KiB
PHP
128 lines
3.8 KiB
PHP
#!/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 stdClass();
|
|
|
|
$json_data->metadata->current_version_date = '';
|
|
$json_data->metadata->current_version = '';
|
|
$json_data->metadata->download_path = '';
|
|
$json_data->metadata->show_update_package = true;
|
|
$json_data->metadata->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',
|
|
'advanced_update',
|
|
$version
|
|
);
|
|
}
|
|
|
|
echo(json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n");
|
|
|
|
function phpbb_add_package_file(array &$package_list, $name, $file_name, $type, $subtype, $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;
|
|
}
|