fix: skip major updater if not ready for prod (#4080)

This commit is contained in:
Sami Mazouz 2024-10-19 17:45:30 +01:00 committed by GitHub
parent a5a1f6a9d2
commit 321020ab83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 38 additions and 12 deletions

View File

@ -130,7 +130,7 @@ export default class ExtensionCard<CustomAttrs extends IExtensionAttrs = IExtens
); );
} }
if (!extension.isStable()) { if (!extension.isProductionReady()) {
items.add( items.add(
'unstable', 'unstable',
<Badge <Badge

View File

@ -7,6 +7,7 @@ import MajorUpdater from './MajorUpdater';
import ItemList from 'flarum/common/utils/ItemList'; import ItemList from 'flarum/common/utils/ItemList';
import InfoTile from 'flarum/common/components/InfoTile'; import InfoTile from 'flarum/common/components/InfoTile';
import ExtensionCard from './ExtensionCard'; import ExtensionCard from './ExtensionCard';
import { isProductionReady } from '../utils/versions';
export interface IUpdaterAttrs extends ComponentAttrs {} export interface IUpdaterAttrs extends ComponentAttrs {}
@ -24,7 +25,7 @@ export default class Updater extends Component<IUpdaterAttrs> {
<div className="ExtensionManager-updaterControls">{this.controlItems().toArray()}</div> <div className="ExtensionManager-updaterControls">{this.controlItems().toArray()}</div>
{this.availableUpdatesView()} {this.availableUpdatesView()}
</div>, </div>,
core && core.package['latest-major'] ? ( core && core.package['latest-major'] && isProductionReady(core.package['latest-major']) ? (
<MajorUpdater coreUpdate={core.package} updateState={app.extensionManager.control.lastUpdateRun.major} /> <MajorUpdater coreUpdate={core.package} updateState={app.extensionManager.control.lastUpdateRun.major} />
) : null, ) : null,
]; ];

View File

@ -1,6 +1,7 @@
import Model from 'flarum/common/Model'; import Model from 'flarum/common/Model';
import app from 'flarum/admin/app'; import app from 'flarum/admin/app';
import type { Extension } from 'flarum/admin/AdminApplication'; import type { Extension } from 'flarum/admin/AdminApplication';
import { isProductionReady } from '../utils/versions';
export default class ExternalExtension extends Model { export default class ExternalExtension extends Model {
extensionId = Model.attribute<string>('extensionId'); extensionId = Model.attribute<string>('extensionId');
@ -36,16 +37,8 @@ export default class ExternalExtension extends Model {
return currentVersion.split('.')[0] === latestCompatibleVersion.split('.')[0]; return currentVersion.split('.')[0] === latestCompatibleVersion.split('.')[0];
} }
public isStable(): boolean { public isProductionReady(): boolean {
const split = this.highestVersion().split('-'); return isProductionReady(this.highestVersion());
if (split.length === 1) {
return true;
}
const stability = split[1].split('.');
return stability[0] === 'stable';
} }
public toLocalExtension(): Extension { public toLocalExtension(): Extension {

View File

@ -0,0 +1,32 @@
export enum VersionStability {
Stable = 'stable',
Alpha = 'alpha',
Beta = 'beta',
RC = 'rc',
Dev = 'dev',
}
export function isProductionReady(version: string): boolean {
return [VersionStability.Stable, VersionStability.RC].includes(stability(version));
}
export function stability(version: string): VersionStability {
const split = version.split('-');
if (split.length === 1) {
return VersionStability.Stable;
}
const stab = split[1].split('.')[0].toLowerCase();
switch (stab) {
case 'alpha':
return VersionStability.Alpha;
case 'beta':
return VersionStability.Beta;
case 'rc':
return VersionStability.RC;
default:
return VersionStability.Dev;
}
}