run method
FutureOr<int>
run({
- required Directory directoryBase,
- required Directory? directoryOutputBuildServerUniverse,
- required String? inputFileName,
- required ServerUniverseBuildType server_universeDartBuildType,
- required ServerUniversePlatformType server_universeDartPlatformType,
- required FutureOr<
void> onBuild(- ServerUniverseApiStatus serverUniverseApiStatus
Server Universe
Implementation
FutureOr<int> run({
required Directory directoryBase,
required Directory? directoryOutputBuildServerUniverse,
required String? inputFileName,
required ServerUniverseBuildType server_universeDartBuildType,
required ServerUniversePlatformType server_universeDartPlatformType,
required FutureOr<void> Function(
ServerUniverseApiStatus serverUniverseApiStatus)
onBuild,
}) async {
if (Dart.isWeb) {
return 1;
}
File file_pubspec = File(path.join(directoryBase.path, "pubspec.yaml"));
if (!file_pubspec.existsSync()) {
print("pubspec not found");
return 1;
}
// build platform supabase
if (server_universeDartPlatformType ==
ServerUniversePlatformType.supabase) {
Process? procces = await Future(() async {
if (Dart.isLinux) {
return await Process.start(
"sudo",
[
"supabase",
"functions",
"serve",
"--no-verify-jwt",
],
workingDirectory: directoryBase.path,
);
}
return null;
});
if (procces == null) {
return 1;
}
procces.stderr.listen((event) {
stderr.add(event);
});
procces.stdout.listen((event) {
stdout.add(event);
});
Directory directory_bin = Directory(path.join(directoryBase.path, "bin"));
Directory directory_lib = Directory(path.join(directoryBase.path, "lib"));
bool is_pending_update = false;
DateTime dateTime_expired = DateTime.now();
void onUpdate(FileSystemEvent event) async {
if (RegExp(r"([.]dart)$", caseSensitive: false)
.hasMatch(path.basename(event.path))) {
if (is_pending_update) {
if (dateTime_expired.isExpired() == false) {
return;
}
}
is_pending_update = true;
dateTime_expired = DateTime.now().add(Duration(seconds: 30));
var strm = build(
directoryBase: directoryBase,
inputFileName: inputFileName,
directoryOutputBuildServerUniverse:
directoryOutputBuildServerUniverse,
server_universeDartBuildType: server_universeDartBuildType,
server_universeDartPlatformType: server_universeDartPlatformType,
);
await for (var event in strm) {
await onBuild(event);
}
is_pending_update = false;
}
}
// old
directory_bin.watch(recursive: true).listen(onUpdate);
directory_lib.watch(recursive: true).listen(onUpdate);
directory_lib.listSync().watchRecursive(onData: onUpdate);
return await (procces.exitCode);
}
return 1;
}