main function
void
main()
Automated export file generator for Dart packages.
This utility script automatically scans the lib/ directory and generates
a package.dart file containing export statements for all Dart files found.
Useful for maintaining package-level exports without manual tracking.
Functionality:
- Recursively scans lib/ directory for .dart files
- Generates export statements for each file
- Excludes the generated package.dart file itself
- Creates/overwrites lib/package.dart with all exports
Usage: Run this script using Dart CLI:
dart run lib/package_export_generator.dart
Generated Output Example:
export 'app/core/utils/rt_utils.dart';
export 'app/widgets/rt_common_widgets.dart';
export 'app/models/prediction.dart';
// ... etc
Note: This is a development utility script and should not be included in production builds. It's primarily used during package development to maintain export files automatically.
See also:
- rtbase.dart for the main package export file (manually curated)
Implementation
void main() async {
final Directory libDir =
Directory('./lib'); // or 'lib' depending on your folder structure
final File exportFile = File('lib/package.dart');
if (!await libDir.exists()) {
debugPrint('Source directory does not exist.');
return;
}
final List<FileSystemEntity> files = libDir.listSync(recursive: true);
// Gather all .dart files, except the current export file or unwanted files
final List<String> dartFiles = files
.whereType<File>()
.where((file) =>
file.path.endsWith('.dart') && !file.path.contains('package.dart'))
.map((file) => file.path.replaceFirst('lib/', ''))
.toList();
// Create the export content
final StringBuffer exportsBuffer = StringBuffer();
for (final String file in dartFiles) {
exportsBuffer.writeln("export '$file';");
}
// Write the exports to the package.dart file
await exportFile.writeAsString(exportsBuffer.toString());
debugPrint('Export file generated: lib/package.dart');
}