build method
Stream<ServerUniverseApiStatus>
build({
- required Directory directoryBase,
- required Directory? directoryOutputBuildServerUniverse,
- required String? inputFileName,
- required ServerUniverseBuildType server_universeDartBuildType,
- 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");
}