build method

Stream<ServerUniverseApiStatus> build({
  1. required Directory directoryBase,
  2. required Directory? directoryOutputBuildServerUniverse,
  3. required String? inputFileName,
  4. required ServerUniverseBuildType server_universeDartBuildType,
  5. required ServerUniversePlatformType server_universeDartPlatformType,
})

Server Universe

Implementation

Stream<ServerUniverseApiStatus> build({
  required Directory directoryBase,
  required Directory? directoryOutputBuildServerUniverse,
  required String? inputFileName,
  required ServerUniverseBuildType server_universeDartBuildType,
  required ServerUniversePlatformType server_universeDartPlatformType,
}) async* {
  File file_pubspec = File(path.join(directoryBase.path, "pubspec.yaml"));

  if (!file_pubspec.existsSync()) {
    yield ServerUniverseApiStatus(
        serverUniverseApiStatusType: ServerUniverseApiStatusType.failed,
        value:
            "Failed Build Because File: ${path.basename(file_pubspec.path)} not Found");
    return;
  }
  Map yaml_code =
      (yaml.loadYaml(file_pubspec.readAsStringSync(), recover: true) as Map);
  PubspecServerUniverse pubspec_server_universe =
      PubspecServerUniverse(yaml_code.clone());
  Directory directory_script =
      Directory(path.join(directoryBase.path, "bin"));
  Directory directory_build =
      Directory(path.join(directoryBase.path, "build"));
  if (directory_build.existsSync() == false) {
    directory_build.createSync(
      recursive: true,
    );
  }
  Directory directory_build_server_universe =
      Directory(path.join(directory_build.path, "server_universe"));
  if (directory_build_server_universe.existsSync() == false) {
    directory_build_server_universe.createSync(
      recursive: true,
    );
  }

  // build platform supabase
  if (server_universeDartPlatformType ==
      ServerUniversePlatformType.supabase) {
    Directory directory_build_server_universe_supabase =
        await Future(() async {
      Directory? directory_output_procces =
          directoryOutputBuildServerUniverse;
      if (directory_output_procces != null) {
        return directory_output_procces;
      }
      String output_by_condif_projge = (pubspec_server_universe
                  .server_universe.supabase.output_directory ??
              "")
          .trim();
      if (output_by_condif_projge.isNotEmpty) {
        return Directory(output_by_condif_projge);
      }
      return Directory(
          path.join(directory_build_server_universe.path, "supabase"));
    });

    if (directory_build_server_universe_supabase.existsSync() == false) {
      directory_build_server_universe_supabase.createSync(
        recursive: true,
      );
    }
    File file_supabase_server_universe_script = await Future(() async {
      String supabase_script_path = (inputFileName ?? "").trim();
      if (supabase_script_path.isEmpty) {
        supabase_script_path = path.basename(
            (pubspec_server_universe.server_universe.supabase.input_file ??
                    "")
                .trim());
        if (supabase_script_path.isEmpty) {
          supabase_script_path =
              "${pubspec_server_universe.name}_server_universe_supabase";
        }
        if (!RegExp(r"([.]dart)$", caseSensitive: false)
            .hasMatch(supabase_script_path)) {
          supabase_script_path = "${supabase_script_path}.dart";
        }
        return File(
            path.join(directory_script.path, "${supabase_script_path}"));
      } else {
        return File(supabase_script_path);
      }
    });
    if (file_supabase_server_universe_script.existsSync() == false) {
      yield ServerUniverseApiStatus(
          serverUniverseApiStatusType: ServerUniverseApiStatusType.failed,
          value:
              "Supabase Script not found: ${path.basename(file_supabase_server_universe_script.path)}");

      return;
    }
    String outputFileName = "main.dart.js";
    yield ServerUniverseApiStatus(
        serverUniverseApiStatusType: ServerUniverseApiStatusType.info,
        value:
            "Starting Build: ${server_universeDartBuildType.name.toUpperCaseFirstData()} Platform ${server_universeDartPlatformType.name.toUpperCaseFirstData()}: ${path.relative(file_supabase_server_universe_script.path, from: directoryBase.path)}");

    // print("Starting Build: ${server_universeDartBuildType.name.toUpperCaseFirstData()} Platform ${server_universeDartPlatformType.name.toUpperCaseFirstData()}: ${path.relative(file_supabase_server_universe_script.path, from: directoryBase.path)}");
    //
    await compile(
      pubspecServerUniverse: pubspec_server_universe,
      server_universeDartBuildType: server_universeDartBuildType,
      file_script: file_supabase_server_universe_script,
      directoryBuild: directory_build_server_universe_supabase,
      outputFileName: outputFileName,
    );

    File file_index_ts = File(
        path.join(directory_build_server_universe_supabase.path, "index.ts"));
    yield ServerUniverseApiStatus(
        serverUniverseApiStatusType: ServerUniverseApiStatusType.info,
        value: "Write: ${path.basename(file_index_ts.path)}");

    await file_index_ts
        .writeAsString(script_server_universe_functions_supabase(
      fileName: outputFileName,
    ));

    yield ServerUniverseApiStatus(
        serverUniverseApiStatusType: ServerUniverseApiStatusType.succes,
        value:
            "Finished Build: ${directory_build_server_universe_supabase.path}");

    return;
  }

  if (server_universeDartPlatformType ==
      ServerUniversePlatformType.netlify) {}
  if (server_universeDartPlatformType == ServerUniversePlatformType.vercel) {}
  yield ServerUniverseApiStatus(
      serverUniverseApiStatusType: ServerUniverseApiStatusType.info,
      value:
          "Failed Build Because: ${server_universeDartPlatformType.name} not implemented");
}