private async Task <bool> StartAppAndReturnSuccess(IDvinApp dvinApp) { var fileSystemService = new FileSystemService(); var errorsAndInfos = new ErrorsAndInfos(); if (!dvinApp.HasAppBeenPublishedAfterLatestSourceChanges(fileSystemService)) { dvinApp.Publish(fileSystemService, true, errorsAndInfos); if (errorsAndInfos.AnyErrors()) { await NavigateToMessage(string.Join("<br>", errorsAndInfos.Errors)); return(false); } } if (!dvinApp.HasAppBeenPublishedAfterLatestSourceChanges(fileSystemService)) { await NavigateToMessage($"{Constants.BackbendAppId} has not been published since the latest source code changes"); return(false); } vProcess = dvinApp.Start(fileSystemService, errorsAndInfos); Wait.Until(() => dvinApp.IsPortListenedTo(), TimeSpan.FromSeconds(30)); if (errorsAndInfos.AnyErrors()) { await NavigateToMessage(string.Join("<br>", errorsAndInfos.Errors)); return(false); } if (dvinApp.IsPortListenedTo()) { return(true); } await NavigateToMessage($"{Constants.BackbendAppId} started but not listening"); return(false); }
public static Process Start(this IDvinApp dvinApp, IFileSystemService fileSystemService, IErrorsAndInfos errorsAndInfos) { if (dvinApp.IsPortListenedTo()) { errorsAndInfos.Errors.Add($"Another process already listens to port {dvinApp.Port}"); return(null); } if (!fileSystemService.FolderExists(dvinApp.PublishFolder)) { errorsAndInfos.Errors.Add($"Folder \"{dvinApp.PublishFolder}\" not found"); return(null); } var runner = new ProcessStarter(); var process = runner.StartProcess("dotnet", dvinApp.Executable, dvinApp.PublishFolder, errorsAndInfos); return(process); }