57 lines
1.4 KiB
Dart
57 lines
1.4 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:args/args.dart';
|
|
|
|
ArgParser buildParser() {
|
|
return ArgParser()
|
|
..addOption(
|
|
'isar',
|
|
)
|
|
..addOption(
|
|
'backend-url',
|
|
help: 'Override backend API base URL (e.g. https://api.example.com)',
|
|
)
|
|
..addFlag('debug');
|
|
}
|
|
|
|
class BotConfig {
|
|
BotConfig({
|
|
required this.backendUrl,
|
|
required this.shareDailyLimit,
|
|
});
|
|
|
|
final String backendUrl;
|
|
final int shareDailyLimit;
|
|
|
|
static const String defaultBackendUrl = 'https://api.mnemo-cards.online';
|
|
static const int defaultShareDailyLimit = 1;
|
|
|
|
factory BotConfig.fromArgs(
|
|
ArgResults results, {
|
|
Map<String, String>? environment,
|
|
}) {
|
|
final env = environment ?? Platform.environment;
|
|
final argValue = results.wasParsed('backend-url')
|
|
? results['backend-url'] as String?
|
|
: null;
|
|
|
|
final resolved = <String?>[
|
|
argValue,
|
|
env['MNEMO_BACKEND_URL'],
|
|
env['BACKEND_URL'],
|
|
defaultBackendUrl,
|
|
].firstWhere(
|
|
(value) => value != null && value.trim().isNotEmpty,
|
|
)!;
|
|
|
|
final shareDailyLimitStr = env['BOT_SHARE_DAILY_LIMIT'];
|
|
final shareDailyLimit = shareDailyLimitStr != null
|
|
? int.tryParse(shareDailyLimitStr) ?? defaultShareDailyLimit
|
|
: defaultShareDailyLimit;
|
|
|
|
return BotConfig(
|
|
backendUrl: resolved.trim(),
|
|
shareDailyLimit: shareDailyLimit,
|
|
);
|
|
}
|
|
}
|