loadFromFile static method

Future<SetupConfig?> loadFromFile(
  1. String path
)

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'],
  );
}