protected override void OnInitializeTask() { Log.Setup(); _reportCreator = new ReportCreatorService(); _projectFiles = new List <ProjectFile>(); _renamedFiles = new Dictionary <(ProjectFile, LanguageDirection), Tuple <string, string> >(); _settings = GetSetting <TargetRenamerSettings>(); base.OnInitializeTask(); }
private void GenerateReports() { var languageDirections = _projectFiles .GroupBy(p => new { p.GetLanguageDirection().TargetLanguage, p.GetLanguageDirection().SourceLanguage }) .Select(g => g.First().GetLanguageDirection()); foreach (var languageDirection in languageDirections) { _settings = Project.GetSettings(languageDirection.TargetLanguage).GetSettingsGroup <TargetRenamerSettings>(); var reportName = $"{PluginResources.TargetRenamer_Name}_{languageDirection.SourceLanguage.IsoAbbreviation}_{languageDirection.TargetLanguage.IsoAbbreviation}"; var projectFiles = _projectFiles .Where(x => Equals(x.GetLanguageDirection().TargetLanguage, languageDirection.TargetLanguage)).ToList(); _reportCreator.CreateReport(Project, projectFiles, _renamedFiles, _settings, languageDirection); CreateReport(reportName, PluginResources.ReportDescription, _reportCreator.ReportFile, languageDirection); } }
protected override void ConfigureConverter(ProjectFile projectFile, IMultiFileConverter multiFileConverter) { _projectFiles.Add(projectFile); _settings = Project.GetSettings(projectFile.Language).GetSettingsGroup <TargetRenamerSettings>(); var fileIds = new List <Guid>() { projectFile.Id }; var task = Project.RunAutomaticTask(fileIds.ToArray(), AutomaticTaskTemplateIds.GenerateTargetTranslations); if (task == null || task.Status != TaskStatus.Completed) { _logger.Error($"{task?.Messages?.FirstOrDefault()?.Message}\n The task has not been run correctly."); } var targetLanguage = new CultureInfo(projectFile.GetLanguageDirection().TargetLanguage.IsoAbbreviation); var files = Project.GetTargetLanguageFiles(projectFile.GetLanguageDirection().TargetLanguage); var file = files.SingleOrDefault(x => x.SourceFile.Id.Equals(projectFile.SourceFile.Id)); var filePath = Path.GetDirectoryName(file.LocalFilePath); var fileExtension = Path.GetExtension(file.LocalFilePath); var fileName = Path.GetFileNameWithoutExtension(file.LocalFilePath); var oldFileName = Path.GetFileName(file.LocalFilePath); if (_settings.AppendAsPrefix) { fileName = CreateFileNameWithPrefix(fileName, fileExtension, targetLanguage); } if (_settings.AppendAsSuffix) { fileName = CreateFileNameWithSuffix(fileName, fileExtension, targetLanguage); } if (_settings.UseRegularExpression) { fileName = CreateFileNameWithRegularExpression(fileName, fileExtension); } try { string newFileName; if (_settings.UseCustomLocation) { if (!Directory.Exists(_settings.CustomLocation)) { Directory.CreateDirectory(_settings.CustomLocation ?? throw new InvalidOperationException("Invalid file path!")); } newFileName = Path.Combine(_settings.CustomLocation, targetLanguage.Name, projectFile.Folder, fileName); } else { newFileName = Path.Combine(filePath, fileName); } _renamedFiles.Add( (projectFile, projectFile.GetLanguageDirection()), new Tuple <string, string>(oldFileName, fileName)); // Ensure that the file does not exist if (File.Exists(newFileName)) { File.Delete(newFileName); } Directory.CreateDirectory(Path.Combine(_settings.CustomLocation, targetLanguage.Name, projectFile.Folder)); File.Move(file.LocalFilePath, newFileName); } catch (Exception e) { _logger.Error($"{e.Message}\n {e.StackTrace}"); } RevertToSdlXliff(projectFile); }