addRoute function

void addRoute({
  1. required String projectName,
  2. required String featureName,
})

Implementation

void addRoute({required String projectName, required String featureName}) {
  final routerFile = File('$projectName/lib/core/routes/app_router.dart');
  final content = routerFile.readAsStringSync();

  final featureImport =
      "import '../../features/$featureName/presentation/screens/${featureName}_screen.dart';";

  final routeBlock = '''
    GoRoute(
      path: AppRoutes.$featureName,
      builder: (context, state) => const ${capitalize(featureName)}Screen(),
    ),
''';

  String updated = content;

  if (!content.contains(featureImport)) {
    updated = updated.replaceFirst(
      "import 'package:go_router/go_router.dart';",
      "import 'package:go_router/go_router.dart';\n$featureImport",
    );
  }

  if (!content.contains("AppRoutes.$featureName")) {
    updated = updated.replaceFirst('routes: [', 'routes: [\n$routeBlock');
  }

  routerFile.writeAsStringSync(updated);
  print('🛣️ Route added');
}