mnemo_cards/mnemo_cards_telegram_bot/lib/bot_config.dart
2025-11-11 02:55:41 +03:00

57 lines
1.3 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 = 'http://localhost:8080';
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,
);
}
}