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? environment, }) { final env = environment ?? Platform.environment; final argValue = results.wasParsed('backend-url') ? results['backend-url'] as String? : null; final resolved = [ 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, ); } }