|
4 | 4 | using DotNetApiDiff.Models.Configuration; |
5 | 5 | using Scriban; |
6 | 6 | using Scriban.Runtime; |
| 7 | +using System.Linq; |
7 | 8 |
|
8 | 9 | namespace DotNetApiDiff.Reporting; |
9 | 10 |
|
@@ -65,49 +66,57 @@ public string Format(ComparisonResult result) |
65 | 66 |
|
66 | 67 | private object PrepareConfigData(ComparisonConfiguration config) |
67 | 68 | { |
| 69 | + var namespaceMappings = config?.Mappings?.NamespaceMappings ?? new Dictionary<string, List<string>>(); |
| 70 | + |
| 71 | + // Convert Dictionary to array of objects with key/value properties for Scriban |
| 72 | + var namespaceMappingsArray = namespaceMappings.Select(kvp => new { key = kvp.Key, value = kvp.Value }).ToList(); |
| 73 | + var typeMappingsArray = (config?.Mappings?.TypeMappings ?? new Dictionary<string, string>()).Select(kvp => new { key = kvp.Key, value = kvp.Value }).ToList(); |
| 74 | + |
| 75 | + var mappingsResult = new |
| 76 | + { |
| 77 | + namespace_mappings = namespaceMappingsArray, |
| 78 | + type_mappings = typeMappingsArray, |
| 79 | + auto_map_same_name_types = config?.Mappings?.AutoMapSameNameTypes ?? false, |
| 80 | + ignore_case = config?.Mappings?.IgnoreCase ?? false |
| 81 | + }; |
| 82 | + |
68 | 83 | return new |
69 | 84 | { |
70 | 85 | filters = new |
71 | 86 | { |
72 | | - include_internals = config.Filters.IncludeInternals, |
73 | | - include_compiler_generated = config.Filters.IncludeCompilerGenerated, |
74 | | - include_namespaces = config.Filters.IncludeNamespaces?.ToList() ?? new List<string>(), |
75 | | - exclude_namespaces = config.Filters.ExcludeNamespaces?.ToList() ?? new List<string>(), |
76 | | - include_types = config.Filters.IncludeTypes?.ToList() ?? new List<string>(), |
77 | | - exclude_types = config.Filters.ExcludeTypes?.ToList() ?? new List<string>() |
78 | | - }, |
79 | | - mappings = new |
80 | | - { |
81 | | - namespace_mappings = config.Mappings.NamespaceMappings ?? new Dictionary<string, List<string>>(), |
82 | | - type_mappings = config.Mappings.TypeMappings ?? new Dictionary<string, string>(), |
83 | | - auto_map_same_name_types = config.Mappings.AutoMapSameNameTypes, |
84 | | - ignore_case = config.Mappings.IgnoreCase |
| 87 | + include_internals = config?.Filters?.IncludeInternals ?? false, |
| 88 | + include_compiler_generated = config?.Filters?.IncludeCompilerGenerated ?? false, |
| 89 | + include_namespaces = config?.Filters?.IncludeNamespaces?.ToList() ?? new List<string>(), |
| 90 | + exclude_namespaces = config?.Filters?.ExcludeNamespaces?.ToList() ?? new List<string>(), |
| 91 | + include_types = config?.Filters?.IncludeTypes?.ToList() ?? new List<string>(), |
| 92 | + exclude_types = config?.Filters?.ExcludeTypes?.ToList() ?? new List<string>() |
85 | 93 | }, |
| 94 | + mappings = mappingsResult, |
86 | 95 | exclusions = new |
87 | 96 | { |
88 | | - excluded_types = config.Exclusions.ExcludedTypes?.ToList() ?? new List<string>(), |
89 | | - excluded_members = config.Exclusions.ExcludedMembers?.ToList() ?? new List<string>(), |
90 | | - excluded_type_patterns = config.Exclusions.ExcludedTypePatterns?.ToList() ?? new List<string>(), |
91 | | - excluded_member_patterns = config.Exclusions.ExcludedMemberPatterns?.ToList() ?? new List<string>(), |
92 | | - exclude_compiler_generated = config.Exclusions.ExcludeCompilerGenerated, |
93 | | - exclude_obsolete = config.Exclusions.ExcludeObsolete |
| 97 | + excluded_types = config?.Exclusions?.ExcludedTypes?.ToList() ?? new List<string>(), |
| 98 | + excluded_members = config?.Exclusions?.ExcludedMembers?.ToList() ?? new List<string>(), |
| 99 | + excluded_type_patterns = config?.Exclusions?.ExcludedTypePatterns?.ToList() ?? new List<string>(), |
| 100 | + excluded_member_patterns = config?.Exclusions?.ExcludedMemberPatterns?.ToList() ?? new List<string>(), |
| 101 | + exclude_compiler_generated = config?.Exclusions?.ExcludeCompilerGenerated ?? false, |
| 102 | + exclude_obsolete = config?.Exclusions?.ExcludeObsolete ?? false |
94 | 103 | }, |
95 | 104 | breaking_change_rules = new |
96 | 105 | { |
97 | | - treat_type_removal_as_breaking = config.BreakingChangeRules.TreatTypeRemovalAsBreaking, |
98 | | - treat_member_removal_as_breaking = config.BreakingChangeRules.TreatMemberRemovalAsBreaking, |
99 | | - treat_signature_change_as_breaking = config.BreakingChangeRules.TreatSignatureChangeAsBreaking, |
100 | | - treat_reduced_accessibility_as_breaking = config.BreakingChangeRules.TreatReducedAccessibilityAsBreaking, |
101 | | - treat_added_type_as_breaking = config.BreakingChangeRules.TreatAddedTypeAsBreaking, |
102 | | - treat_added_member_as_breaking = config.BreakingChangeRules.TreatAddedMemberAsBreaking, |
103 | | - treat_added_interface_as_breaking = config.BreakingChangeRules.TreatAddedInterfaceAsBreaking, |
104 | | - treat_removed_interface_as_breaking = config.BreakingChangeRules.TreatRemovedInterfaceAsBreaking, |
105 | | - treat_parameter_name_change_as_breaking = config.BreakingChangeRules.TreatParameterNameChangeAsBreaking, |
106 | | - treat_added_optional_parameter_as_breaking = config.BreakingChangeRules.TreatAddedOptionalParameterAsBreaking |
| 106 | + treat_type_removal_as_breaking = config?.BreakingChangeRules?.TreatTypeRemovalAsBreaking ?? true, |
| 107 | + treat_member_removal_as_breaking = config?.BreakingChangeRules?.TreatMemberRemovalAsBreaking ?? true, |
| 108 | + treat_signature_change_as_breaking = config?.BreakingChangeRules?.TreatSignatureChangeAsBreaking ?? true, |
| 109 | + treat_reduced_accessibility_as_breaking = config?.BreakingChangeRules?.TreatReducedAccessibilityAsBreaking ?? true, |
| 110 | + treat_added_type_as_breaking = config?.BreakingChangeRules?.TreatAddedTypeAsBreaking ?? false, |
| 111 | + treat_added_member_as_breaking = config?.BreakingChangeRules?.TreatAddedMemberAsBreaking ?? false, |
| 112 | + treat_added_interface_as_breaking = config?.BreakingChangeRules?.TreatAddedInterfaceAsBreaking ?? true, |
| 113 | + treat_removed_interface_as_breaking = config?.BreakingChangeRules?.TreatRemovedInterfaceAsBreaking ?? true, |
| 114 | + treat_parameter_name_change_as_breaking = config?.BreakingChangeRules?.TreatParameterNameChangeAsBreaking ?? false, |
| 115 | + treat_added_optional_parameter_as_breaking = config?.BreakingChangeRules?.TreatAddedOptionalParameterAsBreaking ?? false |
107 | 116 | }, |
108 | | - output_format = config.OutputFormat.ToString(), |
109 | | - output_path = config.OutputPath ?? string.Empty, |
110 | | - fail_on_breaking_changes = config.FailOnBreakingChanges |
| 117 | + output_format = config?.OutputFormat.ToString() ?? "Console", |
| 118 | + output_path = config?.OutputPath ?? string.Empty, |
| 119 | + fail_on_breaking_changes = config?.FailOnBreakingChanges ?? false |
111 | 120 | }; |
112 | 121 | } |
113 | 122 |
|
|
0 commit comments