Also figure out the size of mods
This commit is contained in:
@@ -18,6 +18,7 @@ class Mod {
|
|||||||
final List<String> incompatabilities; // ModMetaData.incompatibleWith
|
final List<String> incompatabilities; // ModMetaData.incompatibleWith
|
||||||
final bool
|
final bool
|
||||||
enabled; // ConfigFile.mods.firstWhere((mod) => mod.id == id).enabled
|
enabled; // ConfigFile.mods.firstWhere((mod) => mod.id == id).enabled
|
||||||
|
final int size; // Count of files in the mod directory
|
||||||
|
|
||||||
Mod({
|
Mod({
|
||||||
required this.name,
|
required this.name,
|
||||||
@@ -29,10 +30,10 @@ class Mod {
|
|||||||
required this.softDependencies,
|
required this.softDependencies,
|
||||||
required this.incompatabilities,
|
required this.incompatabilities,
|
||||||
required this.enabled,
|
required this.enabled,
|
||||||
|
required this.size,
|
||||||
});
|
});
|
||||||
|
|
||||||
static Mod fromDirectory(String path) {
|
static Mod fromDirectory(String path) {
|
||||||
final directory = Directory(path);
|
|
||||||
final aboutFile = File('$path/About/About.xml');
|
final aboutFile = File('$path/About/About.xml');
|
||||||
final aboutXml = XmlDocument.parse(aboutFile.readAsStringSync());
|
final aboutXml = XmlDocument.parse(aboutFile.readAsStringSync());
|
||||||
final metadata = aboutXml.findElements('ModMetaData').first;
|
final metadata = aboutXml.findElements('ModMetaData').first;
|
||||||
@@ -46,27 +47,60 @@ class Mod {
|
|||||||
.map((e) => e.innerText)
|
.map((e) => e.innerText)
|
||||||
.toList();
|
.toList();
|
||||||
final description = metadata.findElements('description').first.innerText;
|
final description = metadata.findElements('description').first.innerText;
|
||||||
final hardDependencies =
|
|
||||||
metadata
|
List<String> hardDependencies = [];
|
||||||
.findElements('modDependenciesByVersion')
|
try {
|
||||||
.last
|
hardDependencies =
|
||||||
.findElements('li')
|
metadata
|
||||||
.map((e) => e.findElements('packageId').first.innerText.toLowerCase())
|
.findElements('modDependenciesByVersion')
|
||||||
.toList();
|
.last
|
||||||
final softDependencies =
|
.findElements('li')
|
||||||
metadata
|
.map(
|
||||||
.findElements('loadAfter')
|
(e) =>
|
||||||
.first
|
e.findElements('packageId').first.innerText.toLowerCase(),
|
||||||
.findElements('li')
|
)
|
||||||
.map((e) => e.innerText.toLowerCase())
|
.toList();
|
||||||
.toList();
|
} catch (e) {
|
||||||
final incompatabilities =
|
print('$name has no hard dependencies');
|
||||||
metadata
|
}
|
||||||
.findElements('incompatibleWith')
|
|
||||||
.first
|
List<String> softDependencies = [];
|
||||||
.findElements('li')
|
try {
|
||||||
.map((e) => e.innerText.toLowerCase())
|
softDependencies =
|
||||||
.toList();
|
metadata
|
||||||
|
.findElements('loadAfter')
|
||||||
|
.first
|
||||||
|
.findElements('li')
|
||||||
|
.map((e) => e.innerText.toLowerCase())
|
||||||
|
.toList();
|
||||||
|
} catch (e) {
|
||||||
|
print('$name has no soft dependencies');
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> incompatabilities = [];
|
||||||
|
try {
|
||||||
|
incompatabilities =
|
||||||
|
metadata
|
||||||
|
.findElements('incompatibleWith')
|
||||||
|
.first
|
||||||
|
.findElements('li')
|
||||||
|
.map((e) => e.innerText.toLowerCase())
|
||||||
|
.toList();
|
||||||
|
} catch (e) {
|
||||||
|
print('$name has no incompatabilities');
|
||||||
|
}
|
||||||
|
|
||||||
|
final size =
|
||||||
|
Directory(path)
|
||||||
|
.listSync(recursive: true)
|
||||||
|
.where(
|
||||||
|
(entity) =>
|
||||||
|
!entity.path
|
||||||
|
.split(Platform.pathSeparator)
|
||||||
|
.last
|
||||||
|
.startsWith('.'),
|
||||||
|
)
|
||||||
|
.length;
|
||||||
|
|
||||||
return Mod(
|
return Mod(
|
||||||
name: name,
|
name: name,
|
||||||
@@ -78,13 +112,14 @@ class Mod {
|
|||||||
softDependencies: softDependencies,
|
softDependencies: softDependencies,
|
||||||
incompatabilities: incompatabilities,
|
incompatabilities: incompatabilities,
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
size: size,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ModList {
|
class ModList {
|
||||||
final String path;
|
final String path;
|
||||||
List<Mod> mods = [];
|
Map<String, Mod> mods = {};
|
||||||
|
|
||||||
ModList({required this.path});
|
ModList({required this.path});
|
||||||
|
|
||||||
@@ -101,10 +136,10 @@ class ModList {
|
|||||||
for (final modDir in modDirectories) {
|
for (final modDir in modDirectories) {
|
||||||
try {
|
try {
|
||||||
final mod = Mod.fromDirectory(modDir);
|
final mod = Mod.fromDirectory(modDir);
|
||||||
mods.add(mod);
|
mods[mod.id] = mod;
|
||||||
print(
|
print(
|
||||||
'Loaded mod: ${mod.name} (ID: ${mod.id}) from directory: $modDir. '
|
'Loaded mod: ${mod.name} (ID: ${mod.id}) from directory: $modDir. '
|
||||||
'Description: ${mod.description}, '
|
'Size: ${mod.size}, '
|
||||||
'Hard Dependencies: ${mod.hardDependencies.join(', ')}, '
|
'Hard Dependencies: ${mod.hardDependencies.join(', ')}, '
|
||||||
'Soft Dependencies: ${mod.softDependencies.join(', ')}, '
|
'Soft Dependencies: ${mod.softDependencies.join(', ')}, '
|
||||||
'Incompatibilities: ${mod.incompatabilities.join(', ')}',
|
'Incompatibilities: ${mod.incompatabilities.join(', ')}',
|
||||||
@@ -147,7 +182,7 @@ class ConfigFile {
|
|||||||
print('Found ${mods.length} active mods.');
|
print('Found ${mods.length} active mods.');
|
||||||
|
|
||||||
for (final mod in mods) {
|
for (final mod in mods) {
|
||||||
print('Mod found: ${mod.innerText}');
|
// print('Mod found: ${mod.innerText}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user