public void EnsureDirectoryExists(string directory) { if (!_commands.DirectoryExists(directory)) { Logger.Info($"Creating staging directory {directory}"); _commands.CreateDirectory(directory); } else { Logger.Debug($"Directory {directory} already exists, so it does not need to be created"); } }
public Result InstallOrUpgrade(string file) { try { Logger.Info($"Deleting extracted directory {StagingExtractedDirectory} if it exists"); if (_commands.DirectoryExists(StagingExtractedDirectory)) { _commands.DeleteDirectory(StagingExtractedDirectory); } Logger.Debug($"Creating staging extracted directory {StagingExtractedDirectory}"); _commands.CreateDirectory(StagingExtractedDirectory); Logger.Info("Stopping cafe service so an upgrade can occur."); var stopResult = DoCafeService("stop"); if (stopResult.IsFailed) { Logger.Error("Could not stop cafe service, so upgrade failed"); return(stopResult); } // extract to staged directory Logger.Info($"Extracting cafe installaction at {file} to {StagingExtractedDirectory}"); ZipFile.ExtractToDirectory(file, StagingExtractedDirectory); Logger.Info($"Copying all files to cafe install directory at {_cafeApplicationDirectory}"); foreach (var applicationFile in Directory.GetFiles(StagingExtractedDirectory, "*.*", SearchOption.TopDirectoryOnly)) { if (applicationFile.Contains("server.json")) { Logger.Debug("Not copying server.json"); continue; } Logger.Info($"Copying {applicationFile} to cafe application directory at {_cafeApplicationDirectory}"); File.Copy(applicationFile, Path.Combine(_cafeApplicationDirectory, Path.GetFileName(applicationFile)), true); } Logger.Info("Finished copying files. Starting service"); var startResult = DoCafeService("start"); if (startResult.IsFailed) { Logger.Error("Could not restart cafe service, so upgrade failed"); return(startResult); } Logger.Info("Finished starting service. Upgrade was successful."); return(Result.Successful()); } catch (Exception e) { Logger.Error($"Unexpected exception while upgrading {file}: {e}"); return(Result.Failure("Unexpected exception while upgrading")); } }