loadFromFile static method
Load configuration from file
Implementation
static Future<SetupConfig?> loadFromFile(String path) async {
final File file = File(path);
if (!file.existsSync()) return null;
final String content = await file.readAsString();
final Map<String, String> values = <String, String>{};
for (final String line in content.split('\n')) {
final String trimmed = line.trim();
if (trimmed.isEmpty || trimmed.startsWith('#')) continue;
final List<String> parts = trimmed.split('=');
if (parts.length >= 2) {
values[parts[0].trim()] = parts.sublist(1).join('=').trim();
}
}
final String templateName = values['TEMPLATE_NAME'] ?? 'arcane_template';
final TemplateType template = TemplateType.values.firstWhere(
(TemplateType t) => t.name == templateName,
orElse: () => TemplateType.arcaneTemplate,
);
return SetupConfig(
appName: values['APP_NAME'] ?? 'my_app',
orgDomain: values['ORG_DOMAIN'] ?? 'com.example',
baseClassName: values['BASE_CLASS_NAME'] ?? 'MyApp',
template: template,
outputDir: values['OUTPUT_DIR'] ?? Directory.current.path,
platforms: (values['PLATFORMS'] ?? 'android,ios,web,linux,macos,windows')
.split(','),
createModels: values['CREATE_MODELS'] == 'yes',
createServer: values['CREATE_SERVER'] == 'yes',
useFirebase: values['USE_FIREBASE'] == 'yes',
firebaseProjectId: values['FIREBASE_PROJECT_ID'],
setupCloudRun: values['SETUP_CLOUD_RUN'] == 'yes',
serviceAccountKeyPath: values['SERVICE_ACCOUNT_KEY'],
);
}