Rework saving to config
This commit is contained in:
@@ -13,7 +13,9 @@ class LoadOrder {
|
||||
return order.map((mod) => mod.id).toList();
|
||||
}
|
||||
|
||||
LoadOrder();
|
||||
LoadOrder([List<Mod>? order]) {
|
||||
this.order = order ?? [];
|
||||
}
|
||||
|
||||
bool get hasErrors => errors.isNotEmpty;
|
||||
}
|
||||
@@ -204,6 +206,66 @@ class ModList {
|
||||
}
|
||||
}
|
||||
|
||||
void saveToConfig(LoadOrder loadOrder) {
|
||||
final file = File(configPath);
|
||||
final logger = Logger.instance;
|
||||
|
||||
try {
|
||||
// Create XML builder
|
||||
final builder = XmlBuilder();
|
||||
|
||||
// Add XML declaration
|
||||
builder.declaration(encoding: 'utf-8');
|
||||
|
||||
// Add root element
|
||||
builder.element(
|
||||
'ModsConfigData',
|
||||
nest: () {
|
||||
// Add version element
|
||||
builder.element('version', nest: '1.5.4297 rev994');
|
||||
|
||||
// Add active mods element
|
||||
builder.element(
|
||||
'activeMods',
|
||||
nest: () {
|
||||
// Add each mod as a list item
|
||||
for (final mod in loadOrder.order) {
|
||||
builder.element('li', nest: mod.id);
|
||||
logger.info('Adding mod to config: ${mod.name} (${mod.id})');
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
// Add known expansions element
|
||||
final expansions = mods.values.where((m) => m.isExpansion).toList();
|
||||
if (expansions.isNotEmpty) {
|
||||
builder.element(
|
||||
'knownExpansions',
|
||||
nest: () {
|
||||
for (final mod in expansions) {
|
||||
builder.element('li', nest: mod.id);
|
||||
logger.info(
|
||||
'Adding expansion to config: ${mod.name} (${mod.id})',
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
// Build the XML document
|
||||
final xmlDocument = builder.buildDocument();
|
||||
|
||||
// Write the XML document to file
|
||||
file.writeAsStringSync(xmlDocument.toString());
|
||||
logger.info('Successfully saved mod configuration to: $configPath');
|
||||
} catch (e) {
|
||||
logger.error('Error saving configuration file: $e');
|
||||
throw Exception('Failed to save config file: $e');
|
||||
}
|
||||
}
|
||||
|
||||
void setEnabled(String modId, bool enabled) {
|
||||
if (mods.containsKey(modId)) {
|
||||
final mod = mods[modId]!;
|
||||
|
Reference in New Issue
Block a user