execute method

  1. @override
Future<void> execute()
override

execute command

Implementation

@override
Future<void> execute() async {
  final controllerName = '${name.pascalCase}Controller';
  final controllerBindingName = '${name.pascalCase}ControllerBinding';

  final base = 'lib/presentation/${on.snakeCase}/';
  final screens = '$base/screens';
  final controllers = '$base/controllers';
  final widgets = '$base/widgets';

  final screenDir = '$screens/${name.snakeCase}.screen.dart';
  final controllerDir = '$controllers/${name.snakeCase}.controller.dart';
  final widgetsDir = '$widgets/$on/initial.widget.dart';

  final controllerBindingDir =
      'lib/infrastructure/navigation/bindings/controllers/${name.snakeCase}_controller.binding.dart';

  await GetScreenSample(
    screenDir: screenDir,
    controllerName: controllerName,
    name: name,
    on: on,
  ).create();

  await addExport(
    path: '$screens/screens.dart',
    line: 'export \'${name.snakeCase}.screen.dart\';',
  );

  await addExport(
    path: 'lib/presentation/screens.dart',
    line: 'export \'${on.snakeCase}/screens/screens.dart\';',
  );

  await ControllerSample(
    path: controllerDir,
    fileName: controllerName,
    on: on,
    name: name,
  ).create();

  await WidgetsSample(
    path: widgetsDir,
    controllerName: controllerName,
  ).create();

  await addRoute(name);

  await BindingSample(
    path: controllerBindingDir,
    bindingName: controllerBindingName,
    controllerName: controllerName,
    name: name,
    on: on,
  ).create();

  await addExport(
    path: '$controllers/controllers.dart',
    line: 'export \'${name.snakeCase}.controller.dart\';',
  );

  await addExport(
    path:
        'lib/infrastructure/navigation/bindings/controllers/controllers_bindings.dart',
    line: '''export '${name.snakeCase}_controller.binding.dart';''',
  );

  await ControllerInterfaceSample(
    path:
        'lib/domain/core/abstractions/presentation/controllers/$on/${name.snakeCase}_controller.interface.dart',
    fileName: 'I${name.pascalCase}Controller',
  ).create();
}