///<inheritdoc/>
        public async Task RunAsync()
        {
            var rawInput = await _source.ReadAsync();

            var model     = _deserializer.Deserialize(rawInput);
            var rawOutput = _serializer.Serialize(model);
            await _destination.WriteAsync(rawOutput);
        }
Exemple #2
0
        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);
        }