pubsecDependencySorter function

dynamic pubsecDependencySorter({
  1. required List<String> args,
})

Implementation

pubsecDependencySorter({required List<String> args}) async {
  var logger = Logger(
    filter: NewFilter(), // log in release and debug mode
    printer: PrettyPrinter(
        methodCount: 0, // number of method calls to be displayed
        errorMethodCount: 8, // number of method calls if stacktrace is provided
        colors: true, // Colorful log messages
        printEmojis: true, // Print an emoji for each log message
        printTime: true // Should each log print contain a timestamp
        ), // Use the PrettyPrinter to format and print log
    output: null, // Use the default LogOutput (-> send everything to console)
  );

  logger.w("Starting..");
  try {
    String path = '';
    if (args.isEmpty) {
      path = Directory.current.path;
    } else {
      path = args[0];
    }
    // specify the directory
    Directory myDirectory = Directory(path);

    // load pubSpec
    var pubSpec = await PubSpec.load(myDirectory);
    //get the dependencies
    Map<String, DependencyReference> dependencies = pubSpec.dependencies;
    //get the dev dependency override
    Map<String, DependencyReference> devDependencies = pubSpec.devDependencies;
    //get the dependency override
    Map<String, DependencyReference> dependencyOverrides =
        pubSpec.dependencyOverrides;

    // sort the dependencies
    var sortedDependencies = _sortDependencies(dependencies);
    logger.i("<<<--- sorted dependencies.");

    //sort dev dependency
    var sortedDevDependencies = _sortDependencies(devDependencies);
    logger.i("<<<--- sorted dev dependencies.");

    //sort dependency override
    var sortedDependencyOverrides = _sortDependencies(dependencyOverrides);
    logger.i("<<<---- sorted dependency overrides.");
    // change the dependencies and dependency overrides

    // logger.i("Sorted dependencies: ${sortDependenciesByKey.toString()}");
    var newPubSpec = pubSpec.copy(
      dependencies: sortedDependencies,
      dependencyOverrides: sortedDependencyOverrides,
      devDependencies: sortedDevDependencies,
    );

    // save it with yaml writer
    var yamlWriter = YamlWriter(allowUnquotedStrings: true);

    // Convert the pubspec to a yaml document
    var yamlDoc = yamlWriter.write(newPubSpec.toJson());

    // Write the yaml to the pubspec.yaml file
    File file = File("${myDirectory.path}/pubspec.yaml");
    await file.writeAsString(yamlDoc);

    logger.i("Saved the changes");

    logger.i(
        "Done---< please star and like the package. https://github.com/Genialngash/pubspec-dependency-sorter >");
  } catch (e) {
    logger.e(e);
  }
}