
// bin/generate_assets.dart
import 'dart:io';
import 'package:path/path.dart' as path;
void main() async {
print('🚀 Starting LdAssets generation...');
try {
await LdAssetsGenerator.generate();
print('🎉 LdAssets generation ***pleted!');
} catch (e) {
print('❌ Error generating LdAssets: $e');
}
}
class LdAssetsGenerator {
static Future<void> generate() async {
final pubspecFile = File('pubspec.yaml');
if (!await pubspecFile.exists()) {
print('❌ pubspec.yaml not found');
return;
}
final content = await pubspecFile.readAsString();
print('📄 Reading pubspec.yaml...');
final assets = _parseAssetsFromPubspec(content);
if (assets.isEmpty) {
print('⚠️ No assets found in pubspec.yaml');
print('💡 Please check if your pubspec.yaml has assets configured like this:');
print('''
flutter:
assets:
- assets/images/
- assets/icons/
- assets/fonts/
''');
return;
}
print('📦 Found ${assets.length} assets:');
for (final asset in assets) {
print(' - $asset');
}
final dartCode = _generateDartCode(assets);
// 确保目录存在
final generatedDir = Directory('lib/base_service');
if (!await generatedDir.exists()) {
await generatedDir.create(recursive: true);
}
final outputFile = File('lib/base_service/ld_assets.dart');
await outputFile.writeAsString(dartCode);
print('✅ LdAssets class generated with ${assets.length} assets');
print('📁 Output: lib/base_service/ld_assets.dart');
}
static List<String> _parseAssetsFromPubspec(String content) {
final lines = content.split('\n');
final assets = <String>[];
bool inFlutterSection = false;
bool inAssetsSection = false;
int flutterIndentLevel = 0;
int assetsIndentLevel = 0;
for (int i = 0; i < lines.length; i++) {
final line = lines[i];
final trimmedLine = line.trim();
// 查找 flutter 部分
if (trimmedLine == 'flutter:') {
inFlutter