public GenerateResult Generate([NotNull] IDictionary <string, string> preferences) { var applyErrors = _preferencesManager.ApplyPreferences(preferences); var configuration = _preferencesManager.GetPreferenceInstance <ConfigurationGeneratorPreferences>(); if (applyErrors.Any()) { return(new GenerateResult( generatedFiles: Enumerable.Empty <GeneratedFile>(), errors: applyErrors.Select(p => new GenerationIssue(p.Code, "GenerationService", p.Detail)))); } var result = _generator.GenerateConfigurations(); var generatedFiles = new List <GeneratedFile>(); foreach (var generatedFile in result.GeneratedFiles) { TokenUsageStatistics tokenUsageStatistics = _tokenUsageTracker.GetTokenUsageStatistics(generatedFile.Configuration); generatedFiles.Add(MapFileGenerationResults(generatedFile, tokenUsageStatistics, configuration)); } return(new GenerateResult( generatedFiles: generatedFiles, errors: result.Errors.Select(e => e.ToGenerationIssue()))); }
public GeneratedFile MapFileGenerationResults( [NotNull] SingleFileGenerationResult result, [NotNull] TokenUsageStatistics tokenUsageStatistics, [NotNull] ConfigurationGeneratorPreferences configuration) { if (result == null) { throw new ArgumentNullException(nameof(result)); } if (tokenUsageStatistics == null) { throw new ArgumentNullException(nameof(tokenUsageStatistics)); } var errors = result.Errors.Select(e => e.ToGenerationIssue()); IEnumerable <GenerationIssue> warnings = Enumerable.Empty <GenerationIssue>(); if (!errors.Any()) { var unusedTokenWarnings = tokenUsageStatistics.UnusedTokens.Select(t => new GenerationIssue(GenerationServiceErrorCodes.UnusedTokenErrorCode, GenerationServiceErrorCodes.GenerationServiceErrorSource, $"Unused token: {t}")); var unrecognisedTokenWarnings = tokenUsageStatistics.UnrecognisedTokens.Select(t => new GenerationIssue(GenerationServiceErrorCodes.UnrecognisedToken, GenerationServiceErrorCodes.GenerationServiceErrorSource, $"Unrecognised token: {t}")); if (configuration.ErrorOnWarnings) { errors = errors.Concat(unusedTokenWarnings).Concat(unrecognisedTokenWarnings); } else { warnings = warnings.Concat(unusedTokenWarnings).Concat(unrecognisedTokenWarnings); } if (configuration.ErrorOnFileChanged && result.HasChanged) { var error = new GenerationIssue( GenerationServiceErrorCodes.FileChangedErrorCode, GenerationServiceErrorCodes.GenerationServiceErrorSource, $"File changed and preference 'ErrorOnFileChanged' was supplied."); errors = errors.Concat(error.ToSingleEnumerable()); } } return(new GeneratedFile( result.ConfigurationName, result.FullPath, tokenUsageStatistics.UsedTokens, tokenUsageStatistics.UnusedTokens, tokenUsageStatistics.UnrecognisedTokens, warnings, errors, result.HasChanged)); }