private void Cleanup() { if (_diskProvider.FolderExists(_backupTempFolder)) { _diskProvider.EmptyFolder(_backupTempFolder); } }
public void Start(string installationFolder) { Verify(installationFolder); var appType = _detectApplicationType.GetAppType(); try { _terminateNzbDrone.Terminate(); _backupAndRestore.Backup(installationFolder); _backupAppData.Backup(); _logger.Info("Moving update package to target"); try { _diskProvider.EmptyFolder(installationFolder); _diskProvider.CopyFolder(_appFolderInfo.GetUpdatePackageFolder(), installationFolder); } catch (Exception e) { _backupAndRestore.Restore(installationFolder); _logger.FatalException("Failed to copy upgrade package to target folder.", e); } } finally { _startNzbDrone.Start(appType, installationFolder); } }
public void Backup() { _logger.Info("Backing up appdata (database/config)"); var backupFolderAppData = _appFolderInfo.GetUpdateBackUpAppDataFolder(); if (_diskProvider.FolderExists(backupFolderAppData)) { _diskProvider.EmptyFolder(backupFolderAppData); } else { _diskProvider.CreateFolder(backupFolderAppData); } try { _diskTransferService.TransferFile(_appFolderInfo.GetConfigPath(), _appFolderInfo.GetUpdateBackupConfigFile(), TransferMode.Copy); //Backup new db if exists, else try old then fail if (_diskProvider.FileExists(_appFolderInfo.GetDatabase())) { _diskTransferService.TransferFile(_appFolderInfo.GetDatabase(), _appFolderInfo.GetUpdateBackupDatabase(), TransferMode.Copy); } else { _diskTransferService.TransferFile(_appFolderInfo.GetV0Database(), _appFolderInfo.GetV0UpdateBackupDatabase(), TransferMode.Copy); } } catch (Exception e) { _logger.Error(e, "Couldn't create a data backup"); } }
public void Start(string installationFolder, int processId) { Verify(installationFolder, processId); var appType = _detectApplicationType.GetAppType(); try { _processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_CONSOLE_PROCESS_NAME); _processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_PROCESS_NAME); if (OsInfo.IsWindows) { _terminateNzbDrone.Terminate(processId); } _backupAndRestore.Backup(installationFolder); _backupAppData.Backup(); try { _logger.Info("Emptying installation folder"); _diskProvider.EmptyFolder(installationFolder); _logger.Info("Copying new files to target folder"); _diskTransferService.TransferFolder(_appFolderInfo.GetUpdatePackageFolder(), installationFolder, TransferMode.Copy, false); // Set executable flag on Sonarr app if (OsInfo.IsOsx) { _diskProvider.SetPermissions(Path.Combine(installationFolder, "Sonarr"), "0755", null, null); } } catch (Exception e) { _logger.FatalException("Failed to copy upgrade package to target folder.", e); _backupAndRestore.Restore(installationFolder); } } finally { if (OsInfo.IsWindows) { _startNzbDrone.Start(appType, installationFolder); } else { _terminateNzbDrone.Terminate(processId); _logger.Info("Waiting for external auto-restart."); for (int i = 0; i < 5; i++) { System.Threading.Thread.Sleep(1000); if (_processProvider.Exists(ProcessProvider.NZB_DRONE_PROCESS_NAME)) { _logger.Info("Sonarr was restarted by external process."); break; } } if (!_processProvider.Exists(ProcessProvider.NZB_DRONE_PROCESS_NAME)) { _startNzbDrone.Start(appType, installationFolder); } } } }
public void Start(string installationFolder, int processId) { _logger.Info("Installation Folder: {0}", installationFolder); _logger.Info("Updating Radarr from version {0} to version {1}", _detectExistingVersion.GetExistingVersion(installationFolder), BuildInfo.Version); Verify(installationFolder, processId); var appType = _detectApplicationType.GetAppType(); _processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_CONSOLE_PROCESS_NAME); _processProvider.FindProcessByName(ProcessProvider.NZB_DRONE_PROCESS_NAME); if (OsInfo.IsWindows) { _terminateNzbDrone.Terminate(processId); } try { _backupAndRestore.Backup(installationFolder); _backupAppData.Backup(); if (OsInfo.IsWindows) { if (_processProvider.Exists(ProcessProvider.NZB_DRONE_CONSOLE_PROCESS_NAME) || _processProvider.Exists(ProcessProvider.NZB_DRONE_PROCESS_NAME)) { _logger.Error("Radarr was restarted prematurely by external process."); return; } } try { _logger.Info("Emptying installation folder"); _diskProvider.EmptyFolder(installationFolder); _logger.Info("Copying new files to target folder"); _diskTransferService.MirrorFolder(_appFolderInfo.GetUpdatePackageFolder(), installationFolder); // Set executable flag on Sonarr app if (OsInfo.IsOsx) { _diskProvider.SetPermissions(Path.Combine(installationFolder, "Radarr"), "0755", null, null); var plistPath = Path.Combine(installationFolder, "..", "Info.plist"); var plistContents = File.ReadAllText(plistPath); if (plistContents.Contains("Sonarr")) { plistContents.Replace("Sonarr", "Radarr"); File.WriteAllText(plistPath, plistContents); } } } catch (Exception e) { _logger.Error(e, "Failed to copy upgrade package to target folder."); _backupAndRestore.Restore(installationFolder); throw; } } finally { if (OsInfo.IsWindows) { _startNzbDrone.Start(appType, installationFolder); } else { _terminateNzbDrone.Terminate(processId); _logger.Info("Waiting for external auto-restart."); for (int i = 0; i < 5; i++) { System.Threading.Thread.Sleep(1000); if (_processProvider.Exists(ProcessProvider.NZB_DRONE_PROCESS_NAME)) { _logger.Info("Radarr was restarted by external process."); break; } } if (!_processProvider.Exists(ProcessProvider.NZB_DRONE_PROCESS_NAME)) { _startNzbDrone.Start(appType, installationFolder); } } } }
public void Start(string installationFolder, int processId) { _logger.Info("Installation Folder: {0}", installationFolder); _logger.Info("Updating Radarr from version {0} to version {1}", _detectExistingVersion.GetExistingVersion(installationFolder), BuildInfo.Version); Verify(installationFolder, processId); if (installationFolder.EndsWith(@"\bin\Radarr") || installationFolder.EndsWith(@"/bin/Radarr")) { installationFolder = installationFolder.GetParentPath(); _logger.Info("Fixed Installation Folder: {0}", installationFolder); } var appType = _detectApplicationType.GetAppType(); _processProvider.FindProcessByName(ProcessProvider.RADARR_CONSOLE_PROCESS_NAME); _processProvider.FindProcessByName(ProcessProvider.RADARR_PROCESS_NAME); if (OsInfo.IsWindows) { _terminateNzbDrone.Terminate(processId); } try { _backupAndRestore.Backup(installationFolder); _backupAppData.Backup(); if (OsInfo.IsWindows) { if (_processProvider.Exists(ProcessProvider.RADARR_CONSOLE_PROCESS_NAME) || _processProvider.Exists(ProcessProvider.RADARR_PROCESS_NAME)) { _logger.Error("Radarr was restarted prematurely by external process."); return; } } try { _logger.Info("Emptying installation folder"); _diskProvider.EmptyFolder(installationFolder); _logger.Info("Copying new files to target folder"); _diskTransferService.MirrorFolder(_appFolderInfo.GetUpdatePackageFolder(), installationFolder); // Set executable flag on app if (OsInfo.IsOsx || (OsInfo.IsLinux && PlatformInfo.IsNetCore)) { _diskProvider.SetFilePermissions(Path.Combine(installationFolder, "Radarr"), "755", null); } } catch (Exception e) { _logger.Error(e, "Failed to copy upgrade package to target folder."); _backupAndRestore.Restore(installationFolder); throw; } } finally { if (OsInfo.IsWindows) { _startNzbDrone.Start(appType, installationFolder); } else { _terminateNzbDrone.Terminate(processId); _logger.Info("Waiting for external auto-restart."); for (int i = 0; i < 10; i++) { System.Threading.Thread.Sleep(1000); if (_processProvider.Exists(ProcessProvider.RADARR_PROCESS_NAME)) { _logger.Info("Radarr was restarted by external process."); break; } } if (!_processProvider.Exists(ProcessProvider.RADARR_PROCESS_NAME)) { _startNzbDrone.Start(appType, installationFolder); } } } }
public void Execute(DeleteLogFilesCommand message) { _logger.Debug("Deleting all files in: {0}", _appFolderInfo.GetLogFolder()); _diskProvider.EmptyFolder(_appFolderInfo.GetLogFolder()); }