private async Task <bool> ExtractAsync(TemplatesPackageInfo packageInfo, string finalDest, CancellationToken ct = default(CancellationToken)) { try { _version = packageInfo.Version; if (!string.IsNullOrEmpty(packageInfo.LocalPath)) { var finalDestinationTemp = string.Concat(finalDest, _tmpExtension); await _templatePackage.ExtractAsync(packageInfo.LocalPath, finalDestinationTemp, ReportExtractionProgress, ct); Fs.SafeRenameDirectory(finalDestinationTemp, finalDest); AppHealth.Current.Verbose.TrackAsync($"{StringRes.TemplatesContentExtractedToString} {finalDest}.").FireAndForget(); return(true); } else { AppHealth.Current.Error.TrackAsync(StringRes.TemplatesSourceLocalPathEmptyMessage).FireAndForget(); return(false); } } catch (Exception ex) when(ex.GetType() != typeof(OperationCanceledException)) { AppHealth.Current.Exception.TrackAsync(ex, StringRes.TemplatesSourceExtractContentMessage).FireAndForget(); throw; } }
public override async Task <TemplatesContentInfo> GetContentAsync(TemplatesPackageInfo packageInfo, string workingFolder, CancellationToken ct) { var extractionFolder = await ExtractAsync(packageInfo, true, ct); RemoveTemplatesTempFolders(workingFolder); var finalDestination = Path.Combine(workingFolder, packageInfo.Version.ToString()); var finalDestinationTemp = string.Concat(finalDestination, _tmpExtension); await Fs.SafeMoveDirectoryAsync(Path.Combine(extractionFolder, "Templates"), finalDestinationTemp, true, ReportCopyProgress); Fs.SafeDeleteDirectory(Path.GetDirectoryName(packageInfo.LocalPath)); Fs.SafeRenameDirectory(finalDestinationTemp, finalDestination); var templatesInfo = new TemplatesContentInfo() { Date = packageInfo.Date, Path = finalDestination, Version = packageInfo.Version }; return(templatesInfo); }