addDependencyToBinding function

Future<void> addDependencyToBinding(
  1. String path,
  2. String controllerName,
  3. String import,
  4. bool isVersion5,
)

Add a new dependency to bindings

Example your bindings look like this:

import 'package:get/get.dart';
import 'home_controller.dart';
class HomeBinding extends Bindings {
  @override
  void dependencies() {
    Get.lazyPut<HomeController>(
      () => HomeController()
    );
  }
}

addDependencyToBinding('PATH_YOUR_BINDING',
'DEPENDENCY_NAME', 'DEPENDENCY_DIR' );

//the exit will be:

import 'package:get/get.dart';
import 'home_controller.dart';
import 'package:example/DEPENDENCY_DIR';
class HomeBinding extends Bindings {
   @override
   void dependencies() {
     Get.lazyPut<DEPENDENCY_NAME>(
       () => DEPENDENCY_NAME()
      );
     Get.lazyPut<HomeController>(
       () => HomeController()
      );
   }
}

Implementation

Future<void> addDependencyToBinding(
  String path,
  String controllerName,
  String import,
  bool isVersion5,
) async {
  import = '''import 'package:${PubspecUtils.projectName}/$import';''';
  final insertController = '${controllerName.pascalCase}Controller';

  var file = File(path);
  if (file.existsSync()) {
    var lines = file.readAsLinesSync();
    final contains = lines.any((element) => element.contains(insertController));
    if (!contains) {
      lines.insert(2, import);
      var index = lines.indexWhere((element) {
        element = element.trim();
        return element.startsWith(
          isVersion5 ? 'return [' : 'void dependencies() {',
        );
      });
      index++;

      String insertContent;
      if (PubspecUtilsTemplates.insertControllerTemplate.isNotEmpty) {
        insertContent = await loadContent(
          PubspecUtilsTemplates.insertControllerTemplate,
          controllerName,
        );
      } else {
        insertContent =
            '''${isVersion5 ? "Bind" : "Get"}.lazyPut<$insertController>(() => $insertController(),)${isVersion5 ? "," : ";"}''';
      }

      lines.insert(
        index,
        insertContent,
      );

      writeFile(
        file.path,
        lines.join('\n'),
        overwrite: true,
        logger: false,
        useRelativeImport: true,
      );
      LogService.success(
        LocaleKeys.sucess_add_controller_in_bindings.trArgs(
          [
            '${controllerName.pascalCase}Controller',
            path,
          ],
        ),
      );
    }
  }
}