init method
Future<void>
init({ - required Consoler<ConsoleProgram> console,
- bool verbose = false,
})
Implementation
Future<void> init({required Consoler console, bool verbose = false}) async {
_packs.clear();
final directory = Directory('packs');
if (!await directory.exists()) {
await directory.create();
print(
'WARNING: No packs directory found. Please add packs to the server.');
}
await for (final file in directory.list()) {
if (file is File) {
final fileName = p.basename(file.path);
final extension = fileName.split('.').last;
if (extension != _stnxExtension && extension != _metadataExtension) {
console.print(
'WARNING: Invalid pack file extension: $fileName. Skipping.',
level: LogLevel.warning);
continue;
}
var name =
fileName.substring(0, fileName.length - _stnxExtension.length - 1);
if (name.isEmpty) name = kCorePackId;
if (extension == _stnxExtension) {
final data = SetonixData.fromData(await file.readAsBytes());
_packs[name] = data;
} else {
final metadata =
ServerDataMetadataMapper.fromJson(await file.readAsString());
_metadata[name] = metadata;
}
}
}
final coreIncluded = _packs.containsKey(kCorePackId);
console.print(
'Loaded ${_packs.length} pack(s). ${coreIncluded ? '(with core pack)' : '(without core pack)'}',
level: LogLevel.info);
if (_packs.isEmpty) {
console.print('No packs loaded.', level: LogLevel.warning);
} else {
console.print('Loaded pack(s): ${_packs.keys.join(', ')}',
level: LogLevel.verbose);
}
}