///<inheritdoc/> public async Task RunAsync() { var rawInput = await _source.ReadAsync(); var model = _deserializer.Deserialize(rawInput); var rawOutput = _serializer.Serialize(model); await _destination.WriteAsync(rawOutput); }
private void ProcessDirectory(string sourceDirectory, string destinationDirectory) { var langSourceMetadata = File.Exists(Path.Combine(sourceDirectory, Constants.LangSourceMetadata + Constants.JsonFileExtension)) ? JsonConvert.DeserializeObject <Dictionary <string, VersionedLanguage> >( File.ReadAllText(Path.Combine(sourceDirectory, Constants.LangSourceMetadata + Constants.JsonFileExtension))) : new Dictionary <string, VersionedLanguage>(); var previousTranslationMetadata = File.Exists(Path.Combine(destinationDirectory, Constants.Languages + Constants.JsonFileExtension)) ? JsonConvert.DeserializeObject <Dictionary <string, LanguageMetadata> >( File.ReadAllText(Path.Combine(destinationDirectory, Constants.Languages + Constants.JsonFileExtension))) : new Dictionary <string, LanguageMetadata>(); var sourceFiles = Directory.GetFiles(sourceDirectory) .Where(path => Constants.SourceFileRegex.IsMatch(path)) .Where(path => langSourceMetadata.ContainsKey(Constants.SourceFileRegex.Match(path).Groups[1].Value)) .ToList(); var rawTranslations = fileParser.Deserialize(sourceFiles); var processedTranslations = translationProcessor.ProcessTranslations(sourceDirectory, langSourceMetadata, rawTranslations); var duplicatesExist = duplicateKeysWriter.CreateDuplicateKeysReport(destinationDirectory, rawTranslations); if (duplicatesExist) { var errorMsg = "Duplicate keys exists...Please inspect duplicateKeys.json for more details"; log.Error(errorMsg); throw new Exception(errorMsg); } outputOrchestrator.CreateOutput(sourceDirectory, destinationDirectory, langSourceMetadata, previousTranslationMetadata, processedTranslations); }