run method
Implementation
void run(List<String> arguments, {String? workingDirectory}) async {
final parser = ArgParser()
..addFlag('help', abbr: 'h', help: 'Show help', negatable: false);
try {
final results = parser.parse(arguments);
if (results['help'] == true) {
_printHelp();
return;
}
final args = results.rest;
final workDir = workingDirectory ?? Directory.current.path;
// Get package name from pubspec.yaml
final packageName = await _getPackageName(workDir);
// Get feature path
String featurePath;
if (args.isNotEmpty) {
featurePath = args[0];
} else {
final autoPath = await _findFeaturePath(workDir);
if (autoPath != null) {
featurePath = autoPath;
print(' 📍 Auto-detected feature path: $featurePath');
} else {
print(' ❌ Feature path is required');
print(' 👉 Example: twafok generate_paths lib/features/Profile');
exit(1);
}
}
final absoluteFeaturePath = path.isAbsolute(featurePath)
? featurePath
: path.join(workDir, featurePath);
if (!await Directory(absoluteFeaturePath).exists()) {
print(' ❌ Path does not exist: $absoluteFeaturePath');
exit(1);
}
final rawName = path.basename(absoluteFeaturePath);
final featureName = _toSnakeCase(rawName);
final outputFile = path.join(absoluteFeaturePath, '$featureName.dart');
print(' ');
print(' 🔧 Generating barrel file: ${path.basename(outputFile)}');
print(' ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
print(' 📦 Package name: $packageName');
await _generateBarrelFile(outputFile, absoluteFeaturePath, featureName, packageName, rawName);
print('');
print(' ✅ Barrel file generation completed!');
} catch (e) {
print(' ❌ Error: $e');
exit(1);
}
}