private async Task <IRemoteFolder> GetLastUploadFolder(IRemoteClient client, Server server, Deployment deployment) { string uploadPath = server.Paths.Deploy; if (!await client.FolderExists(uploadPath)) { return(null); } IRemoteFolder folder = await client.GetFolder(uploadPath); if (folder == null) { return(null); } foreach (string dateFolderPath in folder.SubFolders.Reverse().Select(x => x.Path)) { IRemoteFolder dateFolder = await GetFolder(client, dateFolderPath); IRemoteFolder uploadFolder = dateFolder.SubFolders.Reverse() .FirstOrDefault(x => x.Name.StartsWith(deployment.Name, StringComparison.OrdinalIgnoreCase)); if (uploadFolder != null) { return(uploadFolder); } } return(null); }
private async Task <string> GetVersionedRemotePath(IRemoteClient client, Deployment deployment, string root) { string backupPath = $"{root}{client.PathSeparator}{DateTime.Today:yyyyMMdd}{client.PathSeparator}{deployment.Name}"; string backupPathVersion = backupPath; int version = 1; while (await client.FolderExists(backupPathVersion)) { backupPathVersion = $"{backupPath} ({version++})"; } return(backupPathVersion); }