mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-30 20:24:25 +00:00
chore: reintegrate environment and flavor loading
This commit is contained in:
8
.github/workflows/prepare.yml
vendored
8
.github/workflows/prepare.yml
vendored
@@ -213,10 +213,10 @@ jobs:
|
||||
platform: test
|
||||
skip-core: true
|
||||
|
||||
- name: Generate Flavor Configuration
|
||||
- name: Generate Environment Configuration
|
||||
run: |
|
||||
echo FLAVOR=${{ inputs.flavor }} > .flavor
|
||||
echo COMMIT=${{ github.sha }} >> .flavor
|
||||
echo FLAVOR=${{ inputs.flavor }} > .env
|
||||
echo COMMIT=${{ github.sha }} >> .env
|
||||
|
||||
- name: Generate Localization
|
||||
run: dart ${{github.workspace }}/scripts/generate_localization.dart
|
||||
@@ -229,6 +229,6 @@ jobs:
|
||||
with:
|
||||
name: core-files
|
||||
path: |
|
||||
${{ github.workspace }}/.flavor
|
||||
${{ github.workspace }}/.env
|
||||
${{ github.workspace }}/assets/localization
|
||||
${{ github.workspace }}/lib/**/*.g.dart
|
||||
|
||||
@@ -12,7 +12,7 @@ targets:
|
||||
exclude:
|
||||
- lib
|
||||
include:
|
||||
- lib/core/system/flavor.dart
|
||||
- lib/system/build/environment.dart
|
||||
# Hive
|
||||
hive_generator:
|
||||
enabled: true
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:lunasea/core.dart';
|
||||
|
||||
import '../../../system/build/environment.dart';
|
||||
import '../../../system/build/flavor.dart';
|
||||
|
||||
part 'log_type.g.dart';
|
||||
|
||||
@HiveType(typeId: 24, adapterName: 'LunaLogTypeAdapter')
|
||||
@@ -52,7 +55,7 @@ extension LunaLogTypeExtension on LunaLogType {
|
||||
case LunaLogType.CRITICAL:
|
||||
return true;
|
||||
case LunaLogType.DEBUG:
|
||||
return LunaFlavor().isLowerOrEqualTo(LunaEnvironment.CANDIDATE);
|
||||
return LunaEnvironment().isFlavorSupported(LunaFlavor.CANDIDATE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ import '../modules/dashboard/core/database.dart';
|
||||
import '../modules/dashboard/core/state.dart' as dashboard_state;
|
||||
import '../modules/dashboard/routes/dashboard/route.dart' as dashboard_home;
|
||||
import '../modules/wake_on_lan/api/wake_on_lan.dart';
|
||||
import '../system/build/environment.dart';
|
||||
import '../system/build/flavor.dart';
|
||||
|
||||
part 'modules.g.dart';
|
||||
|
||||
@@ -75,7 +77,7 @@ extension LunaModuleExtension on LunaModule {
|
||||
case LunaModule.NZBGET:
|
||||
return true;
|
||||
case LunaModule.OVERSEERR:
|
||||
return LunaFlavor().isLowerOrEqualTo(LunaEnvironment.EDGE);
|
||||
return LunaEnvironment().isFlavorSupported(LunaFlavor.EDGE);
|
||||
case LunaModule.RADARR:
|
||||
return true;
|
||||
case LunaModule.SABNZBD:
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
export 'system/configuration.dart';
|
||||
export 'system/flavor.dart';
|
||||
export 'system/in_app_purchases.dart';
|
||||
export 'system/localization.dart';
|
||||
export 'system/profile.dart';
|
||||
|
||||
@@ -1,120 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:lunasea/core.dart';
|
||||
import 'package:envify/envify.dart';
|
||||
|
||||
part 'flavor.g.dart';
|
||||
|
||||
const _EDGE = 'edge';
|
||||
const _BETA = 'beta';
|
||||
const _CANDIDATE = 'candidate';
|
||||
const _STABLE = 'stable';
|
||||
|
||||
@Envify(path: '.flavor')
|
||||
class LunaFlavor {
|
||||
static const flavor = _LunaFlavor.flavor;
|
||||
static const commit = _LunaFlavor.commit;
|
||||
}
|
||||
|
||||
extension FlavorExtension on LunaFlavor {
|
||||
LunaEnvironment get environment {
|
||||
switch (LunaFlavor.flavor) {
|
||||
case _EDGE:
|
||||
return LunaEnvironment.EDGE;
|
||||
case _BETA:
|
||||
return LunaEnvironment.BETA;
|
||||
case _CANDIDATE:
|
||||
return LunaEnvironment.CANDIDATE;
|
||||
case _STABLE:
|
||||
return LunaEnvironment.STABLE;
|
||||
}
|
||||
throw Exception('Invalid LunaEnvironment');
|
||||
}
|
||||
|
||||
String get shortCommit {
|
||||
return LunaFlavor.commit.substring(0, min(7, LunaFlavor.commit.length));
|
||||
}
|
||||
|
||||
Future<void> openCommitHistory() async {
|
||||
String _base = 'https://github.com/JagandeepBrar/LunaSea/commits';
|
||||
return '$_base/${LunaFlavor.commit}'.lunaOpenGenericLink();
|
||||
}
|
||||
|
||||
/// Returns if the given flavor is "lower" than the given environment.
|
||||
/// For example, `alpha` is lower than `beta` but is not lower than `develop`.
|
||||
bool isLowerOrEqualTo(LunaEnvironment env) {
|
||||
if (this.environment == env) return true;
|
||||
switch (env) {
|
||||
case LunaEnvironment.EDGE:
|
||||
return false;
|
||||
case LunaEnvironment.BETA:
|
||||
return this.environment == LunaEnvironment.EDGE;
|
||||
case LunaEnvironment.CANDIDATE:
|
||||
return this.environment == LunaEnvironment.EDGE ||
|
||||
this.environment == LunaEnvironment.BETA;
|
||||
case LunaEnvironment.STABLE:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum LunaEnvironment {
|
||||
EDGE,
|
||||
BETA,
|
||||
CANDIDATE,
|
||||
STABLE,
|
||||
}
|
||||
|
||||
extension LunaEnvironmentExtension on LunaEnvironment {
|
||||
String get key {
|
||||
switch (this) {
|
||||
case LunaEnvironment.EDGE:
|
||||
return _EDGE;
|
||||
case LunaEnvironment.BETA:
|
||||
return _BETA;
|
||||
case LunaEnvironment.CANDIDATE:
|
||||
return _CANDIDATE;
|
||||
case LunaEnvironment.STABLE:
|
||||
return _STABLE;
|
||||
}
|
||||
}
|
||||
|
||||
String get name {
|
||||
switch (this) {
|
||||
case LunaEnvironment.EDGE:
|
||||
return 'lunasea.Edge'.tr();
|
||||
case LunaEnvironment.BETA:
|
||||
return 'lunasea.Beta'.tr();
|
||||
case LunaEnvironment.CANDIDATE:
|
||||
return 'lunasea.Candidate'.tr();
|
||||
case LunaEnvironment.STABLE:
|
||||
return 'lunasea.Stable'.tr();
|
||||
}
|
||||
}
|
||||
|
||||
Color get color {
|
||||
switch (this) {
|
||||
case LunaEnvironment.EDGE:
|
||||
return LunaColours.red;
|
||||
case LunaEnvironment.BETA:
|
||||
return LunaColours.orange;
|
||||
case LunaEnvironment.CANDIDATE:
|
||||
return LunaColours.blue;
|
||||
case LunaEnvironment.STABLE:
|
||||
return LunaColours.accent;
|
||||
}
|
||||
}
|
||||
|
||||
LunaEnvironment from(String key) {
|
||||
switch (key) {
|
||||
case _EDGE:
|
||||
return LunaEnvironment.EDGE;
|
||||
case _BETA:
|
||||
return LunaEnvironment.BETA;
|
||||
case _CANDIDATE:
|
||||
return LunaEnvironment.CANDIDATE;
|
||||
case _STABLE:
|
||||
return LunaEnvironment.STABLE;
|
||||
}
|
||||
throw Exception('Unknown Flavor');
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:lunasea/core.dart';
|
||||
|
||||
import '../../system/build/environment.dart';
|
||||
import '../../system/build/flavor.dart';
|
||||
|
||||
class LunaLocalization {
|
||||
/// List of [LunaLanguage] values with all currently supported languages
|
||||
List<LunaLanguage> get supportedLanguages =>
|
||||
@@ -85,7 +88,7 @@ extension LunaLanguageExtension on LunaLanguage {
|
||||
case LunaLanguage.HUNGARIAN:
|
||||
case LunaLanguage.SPANISH:
|
||||
case LunaLanguage.TURKISH:
|
||||
return LunaFlavor().isLowerOrEqualTo(LunaEnvironment.BETA);
|
||||
return LunaEnvironment().isFlavorSupported(LunaFlavor.BETA);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:lunasea/core.dart';
|
||||
|
||||
import '../../system/build/environment.dart';
|
||||
import '../../system/build/flavor.dart';
|
||||
|
||||
class LunaChangelogSheet extends LunaBottomModalSheet {
|
||||
late _Changelog _changelog;
|
||||
String _version = '';
|
||||
@@ -25,8 +28,8 @@ class LunaChangelogSheet extends LunaBottomModalSheet {
|
||||
bool showCommitHistory = false,
|
||||
}) async {
|
||||
// Do not show unless it is a prod release
|
||||
if (LunaFlavor().isLowerOrEqualTo(LunaEnvironment.CANDIDATE)) {
|
||||
if (showCommitHistory) LunaFlavor().openCommitHistory();
|
||||
if (LunaEnvironment().isFlavorSupported(LunaFlavor.CANDIDATE)) {
|
||||
if (showCommitHistory) LunaEnvironment().openCommitHistory();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@ import 'package:flutter/material.dart';
|
||||
import 'package:lunasea/core.dart';
|
||||
import 'package:lunasea/modules/settings.dart';
|
||||
|
||||
import '../../../../system/build/environment.dart';
|
||||
import '../../../../system/build/flavor.dart';
|
||||
|
||||
class SettingsHomeRouter extends SettingsPageRouter {
|
||||
SettingsHomeRouter() : super('/settings');
|
||||
|
||||
@@ -92,7 +95,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin {
|
||||
trailing: const LunaIconButton(icon: Icons.settings_rounded),
|
||||
onTap: () async => SettingsSystemRouter().navigateTo(context),
|
||||
),
|
||||
if (LunaFlavor().isLowerOrEqualTo(LunaEnvironment.EDGE))
|
||||
if (LunaEnvironment().isFlavorSupported(LunaFlavor.EDGE))
|
||||
LunaBlock(
|
||||
title: 'settings.DebugMenu'.tr(),
|
||||
body: [TextSpan(text: 'settings.DebugMenuDescription'.tr())],
|
||||
|
||||
@@ -3,6 +3,8 @@ import 'package:lunasea/core.dart';
|
||||
import 'package:lunasea/modules/settings.dart';
|
||||
|
||||
import '../../../../core/cache/image_cache/image_cache.dart';
|
||||
import '../../../../system/build/environment.dart';
|
||||
import '../../../../system/build/flavor.dart';
|
||||
|
||||
class SettingsSystemRouter extends SettingsPageRouter {
|
||||
SettingsSystemRouter() : super('/settings/system');
|
||||
@@ -56,7 +58,9 @@ class _State extends State<_Widget> with LunaScrollControllerMixin {
|
||||
}
|
||||
|
||||
Widget _versionInformation() {
|
||||
LunaFlavor _flavor = LunaFlavor();
|
||||
LunaEnvironment _env = LunaEnvironment();
|
||||
LunaFlavor _flavor = LunaFlavor.EDGE.from(LunaEnvironment.flavor);
|
||||
|
||||
return FutureBuilder(
|
||||
future: PackageInfo.fromPlatform(),
|
||||
builder: (context, AsyncSnapshot<PackageInfo> snapshot) {
|
||||
@@ -67,12 +71,12 @@ class _State extends State<_Widget> with LunaScrollControllerMixin {
|
||||
title: 'Version: $version',
|
||||
body: [
|
||||
TextSpan(
|
||||
text: _flavor.isLowerOrEqualTo(LunaEnvironment.CANDIDATE)
|
||||
? '${_flavor.environment.name} (${_flavor.shortCommit})'
|
||||
text: _env.isFlavorSupported(LunaFlavor.CANDIDATE)
|
||||
? '${_flavor.name} (${_env.getShortCommit()})'
|
||||
: 'settings.ViewRecentChanges'.tr(),
|
||||
style: TextStyle(
|
||||
fontWeight: LunaUI.FONT_WEIGHT_BOLD,
|
||||
color: _flavor.environment.color,
|
||||
color: _flavor.color,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
39
lib/system/build/environment.dart
Normal file
39
lib/system/build/environment.dart
Normal file
@@ -0,0 +1,39 @@
|
||||
import 'package:envify/envify.dart';
|
||||
|
||||
import '../../core/extensions.dart';
|
||||
import '../../vendor.dart';
|
||||
import 'flavor.dart';
|
||||
|
||||
part 'environment.g.dart';
|
||||
|
||||
@Envify(path: '.env')
|
||||
class LunaEnvironment {
|
||||
static const flavor = _LunaEnvironment.flavor;
|
||||
static const commit = _LunaEnvironment.commit;
|
||||
|
||||
String getShortCommit() {
|
||||
return commit.substring(0, min(7, commit.length));
|
||||
}
|
||||
|
||||
Future<void> openCommitHistory() async {
|
||||
String _base = 'https://github.com/JagandeepBrar/LunaSea/commits';
|
||||
return '$_base/$commit'.lunaOpenGenericLink();
|
||||
}
|
||||
|
||||
/// Returns if the given flavor is "lower" than the given environment.
|
||||
/// For example, `alpha` is lower than `beta` but is not lower than `develop`.
|
||||
bool isFlavorSupported(LunaFlavor env) {
|
||||
LunaFlavor _flavor = LunaFlavor.EDGE.from(flavor);
|
||||
if (_flavor == env) return true;
|
||||
switch (env) {
|
||||
case LunaFlavor.EDGE:
|
||||
return false;
|
||||
case LunaFlavor.BETA:
|
||||
return _flavor == LunaFlavor.EDGE;
|
||||
case LunaFlavor.CANDIDATE:
|
||||
return _flavor == LunaFlavor.EDGE || _flavor == LunaFlavor.BETA;
|
||||
case LunaFlavor.STABLE:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
70
lib/system/build/flavor.dart
Normal file
70
lib/system/build/flavor.dart
Normal file
@@ -0,0 +1,70 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../core/ui.dart';
|
||||
|
||||
const _EDGE = 'edge';
|
||||
const _BETA = 'beta';
|
||||
const _CANDIDATE = 'candidate';
|
||||
const _STABLE = 'stable';
|
||||
|
||||
enum LunaFlavor {
|
||||
EDGE,
|
||||
BETA,
|
||||
CANDIDATE,
|
||||
STABLE,
|
||||
}
|
||||
|
||||
extension LunaFlavorExtension on LunaFlavor {
|
||||
String get key {
|
||||
switch (this) {
|
||||
case LunaFlavor.EDGE:
|
||||
return _EDGE;
|
||||
case LunaFlavor.BETA:
|
||||
return _BETA;
|
||||
case LunaFlavor.CANDIDATE:
|
||||
return _CANDIDATE;
|
||||
case LunaFlavor.STABLE:
|
||||
return _STABLE;
|
||||
}
|
||||
}
|
||||
|
||||
String get name {
|
||||
switch (this) {
|
||||
case LunaFlavor.EDGE:
|
||||
return 'lunasea.Edge'.tr();
|
||||
case LunaFlavor.BETA:
|
||||
return 'lunasea.Beta'.tr();
|
||||
case LunaFlavor.CANDIDATE:
|
||||
return 'lunasea.Candidate'.tr();
|
||||
case LunaFlavor.STABLE:
|
||||
return 'lunasea.Stable'.tr();
|
||||
}
|
||||
}
|
||||
|
||||
Color get color {
|
||||
switch (this) {
|
||||
case LunaFlavor.EDGE:
|
||||
return LunaColours.red;
|
||||
case LunaFlavor.BETA:
|
||||
return LunaColours.orange;
|
||||
case LunaFlavor.CANDIDATE:
|
||||
return LunaColours.blue;
|
||||
case LunaFlavor.STABLE:
|
||||
return LunaColours.accent;
|
||||
}
|
||||
}
|
||||
|
||||
LunaFlavor from(String key) {
|
||||
switch (key) {
|
||||
case _EDGE:
|
||||
return LunaFlavor.EDGE;
|
||||
case _BETA:
|
||||
return LunaFlavor.BETA;
|
||||
case _CANDIDATE:
|
||||
return LunaFlavor.CANDIDATE;
|
||||
case _STABLE:
|
||||
return LunaFlavor.STABLE;
|
||||
}
|
||||
throw Exception('Invalid LunaFlavor');
|
||||
}
|
||||
}
|
||||
@@ -25,8 +25,8 @@
|
||||
"generate:assets": "dart pub global activate spider && spider build",
|
||||
"generate:build_runner": "flutter packages pub run build_runner build --delete-conflicting-outputs",
|
||||
"generate:localization": "dart ./scripts/generate_localization.dart",
|
||||
"git:ignore": "npm run git:ignore:flavor && npm run git:ignore:firebase",
|
||||
"git:ignore:flavor": "git update-index --skip-worktree .flavor",
|
||||
"git:ignore": "npm run git:ignore:environment && npm run git:ignore:firebase",
|
||||
"git:ignore:environment": "git update-index --skip-worktree .env",
|
||||
"git:ignore:firebase": "git update-index --skip-worktree lib/firebase_options.dart",
|
||||
"prepare": "husky install && npm run git:ignore && flutter pub get",
|
||||
"prepare:keychain": "npm run prepare:keychain:ios && npm run prepare:keychain:macos",
|
||||
|
||||
Reference in New Issue
Block a user