run method

void run(
  1. List<String> arguments, {
  2. String? workingDirectory,
})

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);
  }
}