launch method

Future launch()

Implementation

Future launch() async {
  var config = readConfig();

  var sharedLibraryWatcher = DirectoryWatcher(path.join(
          getPathFromRoot(config.structure.sharedLibrary).path, "lib"))
      .events
      .where(watcherPathFilter)
      .listen((event) => enqueueBuild(BuildStages.sharedLibrary));
  var serverWatcher = DirectoryWatcher(
          path.join(getPathFromRoot(config.structure.server).path, "lib"))
      .events
      .where(watcherPathFilter)
      .listen((event) => enqueueBuild(BuildStages.server));

  var applicationWatcher = DirectoryWatcher(path.join(
          getPathFromRoot(config.structure.application).path, "lib"))
      .events
      .where(watcherPathFilter)
      .listen((event) => enqueueBuild(BuildStages.application));

  stdin.echoMode = false;
  stdin.lineMode = false;
  var stdInListener = stdin.listen((event) {
    var str = utf8.decode(event);
    if (str == "r") {
      logger.cln().info("Forcing rebuild");
      enqueueBuild(0);
    }
  });

  enqueueBuild(0);
  await ProcessSignal.sigint.watch().first;
  stdin.echoMode = true;
  stdin.lineMode = true;
  logger.info("Exiting...");
  await sharedLibraryWatcher.cancel();
  await serverWatcher.cancel();
  await applicationWatcher.cancel();
  await stdInListener.cancel();
  await buildController.close();
  await buildStartController.close();
}