mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
The update checker can handle the development releases
This commit is contained in:
parent
5b68b25c85
commit
a2c0d9f7d0
@ -34,8 +34,7 @@ class RequestedVersionCheckStatus extends Event
|
|||||||
{
|
{
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
/** @var User The user */
|
public User $user;
|
||||||
public $user;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new event instance. This event is triggered when Firefly III wants to know
|
* Create a new event instance. This event is triggered when Firefly III wants to know
|
||||||
|
@ -28,6 +28,7 @@ use Carbon\Carbon;
|
|||||||
use FireflyIII\Events\NewVersionAvailable;
|
use FireflyIII\Events\NewVersionAvailable;
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\Exception\GuzzleException;
|
use GuzzleHttp\Exception\GuzzleException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateRequest
|
* Class UpdateRequest
|
||||||
@ -42,8 +43,8 @@ class UpdateRequest implements UpdateRequestInterface
|
|||||||
'message' => (string)trans('firefly.unknown_error'),
|
'message' => (string)trans('firefly.unknown_error'),
|
||||||
];
|
];
|
||||||
|
|
||||||
// try get array from update server:
|
// try to get array from update server:
|
||||||
$updateInfo = $this->contactServer($channel);
|
$updateInfo = $this->contactServer($channel);
|
||||||
if ('error' === $updateInfo['level']) {
|
if ('error' === $updateInfo['level']) {
|
||||||
app('log')->error('Update information contains an error.');
|
app('log')->error('Update information contains an error.');
|
||||||
app('log')->error($updateInfo['message']);
|
app('log')->error($updateInfo['message']);
|
||||||
@ -60,14 +61,14 @@ class UpdateRequest implements UpdateRequestInterface
|
|||||||
{
|
{
|
||||||
app('log')->debug(sprintf('Now in contactServer(%s)', $channel));
|
app('log')->debug(sprintf('Now in contactServer(%s)', $channel));
|
||||||
// always fall back to current version:
|
// always fall back to current version:
|
||||||
$return = [
|
$return = [
|
||||||
'version' => config('firefly.version'),
|
'version' => config('firefly.version'),
|
||||||
'date' => today(config('app.timezone'))->startOfDay(),
|
'date' => today(config('app.timezone'))->startOfDay(),
|
||||||
'level' => 'error',
|
'level' => 'error',
|
||||||
'message' => (string)trans('firefly.unknown_error'),
|
'message' => (string)trans('firefly.unknown_error'),
|
||||||
];
|
];
|
||||||
|
|
||||||
$url = config('firefly.update_endpoint');
|
$url = config('firefly.update_endpoint');
|
||||||
app('log')->debug(sprintf('Going to call %s', $url));
|
app('log')->debug(sprintf('Going to call %s', $url));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -95,7 +96,7 @@ class UpdateRequest implements UpdateRequestInterface
|
|||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
$body = (string)$res->getBody();
|
$body = (string)$res->getBody();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$json = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
|
$json = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
|
||||||
@ -114,8 +115,8 @@ class UpdateRequest implements UpdateRequestInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
// parse response a bit. No message yet.
|
// parse response a bit. No message yet.
|
||||||
$response = $json['firefly_iii'][$channel];
|
$response = $json['firefly_iii'][$channel];
|
||||||
$date = Carbon::createFromFormat('Y-m-d', $response['date']);
|
$date = Carbon::createFromFormat('Y-m-d', $response['date']);
|
||||||
if (false === $date) {
|
if (false === $date) {
|
||||||
$date = today(config('app.timezone'));
|
$date = today(config('app.timezone'));
|
||||||
}
|
}
|
||||||
@ -131,19 +132,35 @@ class UpdateRequest implements UpdateRequestInterface
|
|||||||
private function parseResult(array $information): array
|
private function parseResult(array $information): array
|
||||||
{
|
{
|
||||||
app('log')->debug('Now in parseResult()', $information);
|
app('log')->debug('Now in parseResult()', $information);
|
||||||
$return = [
|
$return = [
|
||||||
'level' => 'error',
|
'level' => 'error',
|
||||||
'message' => (string)trans('firefly.unknown_error'),
|
'message' => (string)trans('firefly.unknown_error'),
|
||||||
];
|
];
|
||||||
$current = config('firefly.version');
|
$current = config('firefly.version');
|
||||||
$latest = $information['version'];
|
$latest = $information['version'];
|
||||||
|
|
||||||
// strip the 'v' from the version if it's there.
|
// strip the 'v' from the version if it's there.
|
||||||
if (str_starts_with($latest, 'v')) {
|
if (str_starts_with($latest, 'v')) {
|
||||||
$latest = substr($latest, 1);
|
$latest = substr($latest, 1);
|
||||||
}
|
}
|
||||||
|
if (str_starts_with($current, 'develop')) {
|
||||||
|
Log::debug(sprintf('User is running develop version "%s"', $current));
|
||||||
|
$parts = explode('/', $current);
|
||||||
|
$devDate = Carbon::createFromFormat('Y-m-d', $parts[1]);
|
||||||
|
|
||||||
$compare = version_compare($latest, $current);
|
if ($devDate->lte($information['date'])) {
|
||||||
|
Log::debug(sprintf('This development release is older, release = %s, latest version %s = %s', $devDate->format('Y-m-d'), $latest, $information['date']->format('Y-m-d')));
|
||||||
|
$return['level'] = 'info';
|
||||||
|
$return['message'] = (string)trans('firefly.update_current_dev_older', ['version' => $current, 'new_version' => $latest]);
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
Log::debug(sprintf('This development release is newer, release = %s, latest version %s = %s', $devDate->format('Y-m-d'), $latest, $information['date']->format('Y-m-d')));
|
||||||
|
$return['level'] = 'info';
|
||||||
|
$return['message'] = (string)trans('firefly.update_current_dev_newer', ['version' => $current, 'new_version' => $latest]);
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$compare = version_compare($latest, $current);
|
||||||
|
|
||||||
app('log')->debug(sprintf('Current version is "%s", latest is "%s", result is: %d', $current, $latest, $compare));
|
app('log')->debug(sprintf('Current version is "%s", latest is "%s", result is: %d', $current, $latest, $compare));
|
||||||
|
|
||||||
@ -166,10 +183,10 @@ class UpdateRequest implements UpdateRequestInterface
|
|||||||
|
|
||||||
// a newer version is available!
|
// a newer version is available!
|
||||||
/** @var Carbon $released */
|
/** @var Carbon $released */
|
||||||
$released = $information['date'];
|
$released = $information['date'];
|
||||||
$today = today(config('app.timezone'))->startOfDay();
|
$today = today(config('app.timezone'))->startOfDay();
|
||||||
$diff = $today->diffInDays($released);
|
$diff = $today->diffInDays($released);
|
||||||
$expectedDiff = config('firefly.update_minimum_age') ?? 6;
|
$expectedDiff = config('firefly.update_minimum_age') ?? 6;
|
||||||
// it's still very fresh, and user wants a stable release:
|
// it's still very fresh, and user wants a stable release:
|
||||||
if ($diff <= $expectedDiff) {
|
if ($diff <= $expectedDiff) {
|
||||||
$return['level'] = 'info';
|
$return['level'] = 'info';
|
||||||
@ -200,13 +217,13 @@ class UpdateRequest implements UpdateRequestInterface
|
|||||||
|
|
||||||
// add warning in case of alpha or beta:
|
// add warning in case of alpha or beta:
|
||||||
// append warning if beta or alpha.
|
// append warning if beta or alpha.
|
||||||
$isBeta = $information['is_beta'] ?? false;
|
$isBeta = $information['is_beta'] ?? false;
|
||||||
if (true === $isBeta) {
|
if (true === $isBeta) {
|
||||||
$return['message'] = sprintf('%s %s', $return['message'], trans('firefly.update_version_beta'));
|
$return['message'] = sprintf('%s %s', $return['message'], trans('firefly.update_version_beta'));
|
||||||
app('log')->debug('New release is also a beta!');
|
app('log')->debug('New release is also a beta!');
|
||||||
}
|
}
|
||||||
|
|
||||||
$isAlpha = $information['is_alpha'] ?? false;
|
$isAlpha = $information['is_alpha'] ?? false;
|
||||||
if (true === $isAlpha) {
|
if (true === $isAlpha) {
|
||||||
$return['message'] = sprintf('%s %s', $return['message'], trans('firefly.update_version_alpha'));
|
$return['message'] = sprintf('%s %s', $return['message'], trans('firefly.update_version_alpha'));
|
||||||
app('log')->debug('New release is also a alpha!');
|
app('log')->debug('New release is also a alpha!');
|
||||||
|
@ -308,6 +308,8 @@ return [
|
|||||||
'update_new_version_alert' => 'A new version of Firefly III is available. You are running :your_version, the latest version is :new_version which was released on :date.',
|
'update_new_version_alert' => 'A new version of Firefly III is available. You are running :your_version, the latest version is :new_version which was released on :date.',
|
||||||
'update_version_beta' => 'This version is a BETA version. You may run into issues.',
|
'update_version_beta' => 'This version is a BETA version. You may run into issues.',
|
||||||
'update_version_alpha' => 'This version is a ALPHA version. You may run into issues.',
|
'update_version_alpha' => 'This version is a ALPHA version. You may run into issues.',
|
||||||
|
'update_current_dev_older' => 'You are running development release ":version", which is older than the latest release :new_version. Please update!',
|
||||||
|
'update_current_dev_newer' => 'You are running development release ":version", which is newer than the latest release :new_version.',
|
||||||
'update_current_version_alert' => 'You are running :version, which is the latest available release.',
|
'update_current_version_alert' => 'You are running :version, which is the latest available release.',
|
||||||
'update_newer_version_alert' => 'You are running :your_version, which is newer than the latest release, :new_version.',
|
'update_newer_version_alert' => 'You are running :your_version, which is newer than the latest release, :new_version.',
|
||||||
'update_check_error' => 'An error occurred while checking for updates: :error',
|
'update_check_error' => 'An error occurred while checking for updates: :error',
|
||||||
|
Loading…
Reference in New Issue
Block a user