applyClientFonts method
Swaps system fonts for client fonts and updates pubspec configuration.
Implementation
Future<void> applyClientFonts(String clientAssetsPath) async {
final clientFontsDir =
Directory(p.join(projectDir, clientAssetsPath, 'fonts'));
final targetFontsDir = Directory(p.join(projectDir, 'assets', 'fonts'));
if (!clientFontsDir.existsSync()) {
print('ℹ️ No custom fonts found for this client. Skipping.');
return;
}
final backupDir = Directory('${targetFontsDir.path}.bak');
if (targetFontsDir.existsSync() && !backupDir.existsSync()) {
await targetFontsDir.rename(backupDir.path);
}
await targetFontsDir.create(recursive: true);
await _copyDirectory(clientFontsDir, targetFontsDir);
final fontsConfigFile = File(p.join(clientFontsDir.path, 'fonts.yaml'));
if (fontsConfigFile.existsSync()) {
print('✏️ Overwriting pubspec fonts with client configuration...');
final fontsContent = await fontsConfigFile.readAsString();
final fontsList = loadYaml(fontsContent);
if (fontsList is YamlList || fontsList is List) {
await config.updatePubspecFonts(fontsList);
print('✅ Client font configuration applied to pubspec.yaml');
} else {
print('⚠️ Error: fonts.yaml must be a list of font families.');
}
}
}