diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d78a5057a..81e0dbe606 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,14 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Changed -- Implemented partial class model declarations. [4894](https://github.com/microsoft/kiota/issues/4894) -- Fixed a bug where the Go file names were too long - ### Added ### Changed +- Implemented partial class model declarations. [4894](https://github.com/microsoft/kiota/issues/4894) +- Fixed a bug where the Go file names were too long - Fixes bug with model names in Go generated from camel case namespace. [https://github.com/microsoftgraph/msgraph-sdk-go/issues/721] - Plugins OpenAPI extensions are only added when generating plugins to reduce the risk of parsing errors. [#4834](https://github.com/microsoft/kiota/issues/4834) - TypeScript imports are now using ES6 imports with the .js extension. @@ -22,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Ensures descriptions are not empty in sliced OpenApi file when generating a plugin. - Plugins do not emit parameters anymore. [#4841](https://github.com/microsoft/kiota/issues/4841) - References to C# types generated by kiota are prefixed with `global::` to avoid name collisions. [#4796](https://github.com/microsoft/kiota/issues/4796) +- Ensures HashSet properties in `KiotaLock` maintain IgnoreCase comparer across runs [#4916](https://github.com/microsoft/kiota/issues/4916) +- Dropped `client base url set to` message when generating plugins. [#4905](https://github.com/microsoft/kiota/issues/4905) ## [1.15.0] - 2024-06-06 diff --git a/src/Kiota.Builder/KiotaBuilder.cs b/src/Kiota.Builder/KiotaBuilder.cs index 226e831e78..f3535b3cf0 100644 --- a/src/Kiota.Builder/KiotaBuilder.cs +++ b/src/Kiota.Builder/KiotaBuilder.cs @@ -432,7 +432,10 @@ internal void SetApiRootUrl() if (openApiDocument is not null && openApiDocument.GetAPIRootUrl(config.OpenAPIFilePath) is string candidateUrl) { config.ApiRootUrl = candidateUrl; - logger.LogInformation("Client root URL set to {ApiRootUrl}", candidateUrl); + if (!config.IsPluginConfiguration) + { + logger.LogInformation("Client root URL set to {ApiRootUrl}", candidateUrl); + } } else logger.LogWarning("No server url found in the OpenAPI document. The base url will need to be set when using the client."); diff --git a/src/Kiota.Builder/Lock/KiotaLock.cs b/src/Kiota.Builder/Lock/KiotaLock.cs index 433861a2fa..a5d38c2fc4 100644 --- a/src/Kiota.Builder/Lock/KiotaLock.cs +++ b/src/Kiota.Builder/Lock/KiotaLock.cs @@ -70,11 +70,11 @@ public bool DisableSSLValidation /// /// The serializers used for this client. /// - public HashSet Serializers { get; set; } = new(); + public HashSet Serializers { get; set; } = new(StringComparer.OrdinalIgnoreCase); /// /// The deserializers used for this client. /// - public HashSet Deserializers { get; set; } = new(); + public HashSet Deserializers { get; set; } = new(StringComparer.OrdinalIgnoreCase); /// /// The structured mime types used for this client. /// @@ -84,15 +84,15 @@ public bool DisableSSLValidation /// /// The path patterns for API endpoints to include for this client. /// - public HashSet IncludePatterns { get; set; } = new(); + public HashSet IncludePatterns { get; set; } = new(StringComparer.OrdinalIgnoreCase); /// /// The path patterns for API endpoints to exclude for this client. /// - public HashSet ExcludePatterns { get; set; } = new(); + public HashSet ExcludePatterns { get; set; } = new(StringComparer.OrdinalIgnoreCase); /// /// The OpenAPI validation rules to disable during the generation. /// - public HashSet DisabledValidationRules { get; set; } = new(); + public HashSet DisabledValidationRules { get; set; } = new(StringComparer.OrdinalIgnoreCase); #pragma warning restore CA2227 /// /// Updates the passed configuration with the values from the lock file. @@ -108,13 +108,13 @@ public void UpdateGenerationConfigurationFromLock(GenerationConfiguration config config.UsesBackingStore = UsesBackingStore; config.ExcludeBackwardCompatible = ExcludeBackwardCompatible; config.IncludeAdditionalData = IncludeAdditionalData; - config.Serializers = Serializers; - config.Deserializers = Deserializers; + config.Serializers = Serializers.ToHashSet(StringComparer.OrdinalIgnoreCase); + config.Deserializers = Deserializers.ToHashSet(StringComparer.OrdinalIgnoreCase); config.StructuredMimeTypes = new(StructuredMimeTypes); - config.IncludePatterns = IncludePatterns; - config.ExcludePatterns = ExcludePatterns; + config.IncludePatterns = IncludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase); + config.ExcludePatterns = ExcludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase); config.OpenAPIFilePath = DescriptionLocation; - config.DisabledValidationRules = DisabledValidationRules; + config.DisabledValidationRules = DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase); config.DisableSSLValidation = DisableSSLValidation; } /// @@ -136,13 +136,13 @@ public KiotaLock(GenerationConfiguration config) UsesBackingStore = config.UsesBackingStore; ExcludeBackwardCompatible = config.ExcludeBackwardCompatible; IncludeAdditionalData = config.IncludeAdditionalData; - Serializers = config.Serializers; - Deserializers = config.Deserializers; + Serializers = config.Serializers.ToHashSet(StringComparer.OrdinalIgnoreCase); + Deserializers = config.Deserializers.ToHashSet(StringComparer.OrdinalIgnoreCase); StructuredMimeTypes = config.StructuredMimeTypes.ToList(); - IncludePatterns = config.IncludePatterns; - ExcludePatterns = config.ExcludePatterns; + IncludePatterns = config.IncludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase); + ExcludePatterns = config.ExcludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase); DescriptionLocation = config.OpenAPIFilePath; - DisabledValidationRules = config.DisabledValidationRules; + DisabledValidationRules = config.DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase); DisableSSLValidation = config.DisableSSLValidation; } } diff --git a/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs b/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs index ede1bb7db7..a8441571fd 100644 --- a/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs +++ b/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs @@ -48,7 +48,7 @@ public bool ExcludeBackwardCompatible /// /// The OpenAPI validation rules to disable during the generation. /// - public HashSet DisabledValidationRules { get; set; } = new(); + public HashSet DisabledValidationRules { get; set; } = new(StringComparer.OrdinalIgnoreCase); /// /// Initializes a new instance of the class. /// @@ -69,7 +69,7 @@ public ApiClientConfiguration(GenerationConfiguration config) : base(config) ExcludeBackwardCompatible = config.ExcludeBackwardCompatible; IncludeAdditionalData = config.IncludeAdditionalData; StructuredMimeTypes = config.StructuredMimeTypes.ToList(); - DisabledValidationRules = config.DisabledValidationRules; + DisabledValidationRules = config.DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase); } /// /// Updates the passed configuration with the values from the config file. @@ -88,7 +88,7 @@ public void UpdateGenerationConfigurationFromApiClientConfiguration(GenerationCo config.ExcludeBackwardCompatible = ExcludeBackwardCompatible; config.IncludeAdditionalData = IncludeAdditionalData; config.StructuredMimeTypes = new(StructuredMimeTypes); - config.DisabledValidationRules = DisabledValidationRules; + config.DisabledValidationRules = DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase); UpdateGenerationConfigurationFromBase(config, clientName, requests); } diff --git a/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs b/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs index 5e690e8f64..2999501447 100644 --- a/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs +++ b/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs @@ -23,7 +23,7 @@ public ApiPluginConfiguration() : base() public ApiPluginConfiguration(GenerationConfiguration config) : base(config) { ArgumentNullException.ThrowIfNull(config); - Types = config.PluginTypes.Select(x => x.ToString()).ToHashSet(); + Types = config.PluginTypes.Select(x => x.ToString()).ToHashSet(StringComparer.OrdinalIgnoreCase); } public HashSet Types { get; set; } = new(StringComparer.OrdinalIgnoreCase); public object Clone() @@ -45,7 +45,7 @@ public void UpdateGenerationConfigurationFromApiPluginConfiguration(GenerationCo { ArgumentNullException.ThrowIfNull(config); ArgumentException.ThrowIfNullOrEmpty(pluginName); - config.PluginTypes = Types.Select(x => Enum.TryParse(x, out var result) ? result : (PluginType?)null).OfType().ToHashSet(); + config.PluginTypes = Types.Select(x => Enum.TryParse(x, true, out var result) ? result : (PluginType?)null).OfType().ToHashSet(); UpdateGenerationConfigurationFromBase(config, pluginName, requests); } } diff --git a/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs b/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs index fa0e320a9c..5bdbf36388 100644 --- a/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs +++ b/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs @@ -18,8 +18,8 @@ private protected BaseApiConsumerConfiguration(GenerationConfiguration config) { ArgumentNullException.ThrowIfNull(config); DescriptionLocation = config.OpenAPIFilePath; - IncludePatterns = new HashSet(config.IncludePatterns); - ExcludePatterns = new HashSet(config.ExcludePatterns); + IncludePatterns = new HashSet(config.IncludePatterns, StringComparer.OrdinalIgnoreCase); + ExcludePatterns = new HashSet(config.ExcludePatterns, StringComparer.OrdinalIgnoreCase); OutputPath = config.OutputPath; } /// @@ -60,8 +60,8 @@ protected void UpdateGenerationConfigurationFromBase(GenerationConfiguration con { ArgumentNullException.ThrowIfNull(config); ArgumentException.ThrowIfNullOrEmpty(clientName); - config.IncludePatterns = IncludePatterns; - config.ExcludePatterns = ExcludePatterns; + config.IncludePatterns = IncludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase); + config.ExcludePatterns = ExcludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase); config.OpenAPIFilePath = DescriptionLocation; config.OutputPath = OutputPath; config.ClientClassName = clientName; diff --git a/src/kiota/Handlers/BaseKiotaCommandHandler.cs b/src/kiota/Handlers/BaseKiotaCommandHandler.cs index 5cf3f62755..e6649c01c9 100644 --- a/src/kiota/Handlers/BaseKiotaCommandHandler.cs +++ b/src/kiota/Handlers/BaseKiotaCommandHandler.cs @@ -310,8 +310,8 @@ private static string GetSourceArg(string path, string manifest) } protected void DisplayUrlInformation(string? apiRootUrl, bool isPlugin = false) { - if (!string.IsNullOrEmpty(apiRootUrl)) - DisplayInfo($"{(isPlugin ? "Plugin" : "Client")} base url set to {apiRootUrl}"); + if (!string.IsNullOrEmpty(apiRootUrl) && !isPlugin) + DisplayInfo($"Client base url set to {apiRootUrl}"); } protected void DisplayGenerateCommandHint() { diff --git a/src/kiota/Handlers/Plugin/AddHandler.cs b/src/kiota/Handlers/Plugin/AddHandler.cs index bb31d1a269..e6bfc11e91 100644 --- a/src/kiota/Handlers/Plugin/AddHandler.cs +++ b/src/kiota/Handlers/Plugin/AddHandler.cs @@ -75,7 +75,7 @@ public override async Task InvokeAsync(InvocationContext context) if (result) { DisplaySuccess("Generation completed successfully"); - DisplayUrlInformation(Configuration.Generation.ApiRootUrl); + DisplayUrlInformation(Configuration.Generation.ApiRootUrl, true); } else if (skipGeneration) { diff --git a/src/kiota/Handlers/Plugin/EditHandler.cs b/src/kiota/Handlers/Plugin/EditHandler.cs index a005fed5d1..895c48504d 100644 --- a/src/kiota/Handlers/Plugin/EditHandler.cs +++ b/src/kiota/Handlers/Plugin/EditHandler.cs @@ -92,7 +92,7 @@ public override async Task InvokeAsync(InvocationContext context) if (result) { DisplaySuccess("Generation completed successfully"); - DisplayUrlInformation(Configuration.Generation.ApiRootUrl); + DisplayUrlInformation(Configuration.Generation.ApiRootUrl, true); } else if (skipGeneration) {