From eede7e70e9d0b81812325430898e4c7d63dc8053 Mon Sep 17 00:00:00 2001 From: Erik Ejlskov Jensen Date: Wed, 16 Oct 2024 15:25:14 +0200 Subject: [PATCH 1/2] Support custom renaming file name fixes #2579 --- .../RevEng.Core.60/ReverseEngineerRunner.cs | 2 +- src/Core/efcpt.8/Constants.cs | 1 + .../HostedServices/ScaffoldHostedService.cs | 3 ++- src/Core/efcpt.8/Options/ScaffoldOptions.cs | 6 +++++ src/Core/efcpt.8/Program.cs | 1 + src/GUI/RevEng.Shared/Cli/CliConfigMapper.cs | 24 ++++++++++++++----- src/GUI/RevEng.Shared/Constants.cs | 2 ++ .../Shared/Extensions/ProjectExtensions.cs | 2 +- 8 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/Core/RevEng.Core.60/ReverseEngineerRunner.cs b/src/Core/RevEng.Core.60/ReverseEngineerRunner.cs index 05bd2e64a..955abcc5c 100644 --- a/src/Core/RevEng.Core.60/ReverseEngineerRunner.cs +++ b/src/Core/RevEng.Core.60/ReverseEngineerRunner.cs @@ -190,7 +190,7 @@ public static ReverseEngineerResult GenerateFiles(ReverseEngineerCommandOptions if (options.UseDatabaseNames && options.CustomReplacers?.Count > 0) { - warnings.Add("'use-database-names' / 'UseDatabaseNames' has been set to true, but a 'efpt.renaming.json' file was also found. This prevents 'efpt.renaming.json' from functioning."); + warnings.Add($"'use-database-names' / 'UseDatabaseNames' has been set to true, but a '{Constants.RenamingFileName}' file was also found. This prevents '{Constants.RenamingFileName}' from functioning."); } var result = new ReverseEngineerResult diff --git a/src/Core/efcpt.8/Constants.cs b/src/Core/efcpt.8/Constants.cs index 0aab052eb..29b001edd 100644 --- a/src/Core/efcpt.8/Constants.cs +++ b/src/Core/efcpt.8/Constants.cs @@ -5,6 +5,7 @@ namespace ErikEJ.EFCorePowerTools; internal static class Constants { public const string ConfigFileName = RevEng.Common.Constants.ConfigFileName; + public const string RenamingFileName = RevEng.Common.Constants.RenamingFileName; #if CORE60 public const CodeGenerationMode CodeGeneration = CodeGenerationMode.EFCore6; diff --git a/src/Core/efcpt.8/HostedServices/ScaffoldHostedService.cs b/src/Core/efcpt.8/HostedServices/ScaffoldHostedService.cs index 472d735a8..d24b9a84f 100644 --- a/src/Core/efcpt.8/HostedServices/ScaffoldHostedService.cs +++ b/src/Core/efcpt.8/HostedServices/ScaffoldHostedService.cs @@ -68,7 +68,8 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) reverseEngineerCommandOptions.DatabaseType, scaffoldOptions.Output ?? Directory.GetCurrentDirectory(), scaffoldOptions.IsDacpac, - scaffoldOptions.ConfigFile.FullName); + scaffoldOptions.ConfigFile.FullName, + scaffoldOptions.RenamingFile.FullName); DisplayService.MarkupLine(); #pragma warning disable S2589 // Boolean expressions should not be gratuitous diff --git a/src/Core/efcpt.8/Options/ScaffoldOptions.cs b/src/Core/efcpt.8/Options/ScaffoldOptions.cs index 65cd19079..71db27402 100644 --- a/src/Core/efcpt.8/Options/ScaffoldOptions.cs +++ b/src/Core/efcpt.8/Options/ScaffoldOptions.cs @@ -29,6 +29,12 @@ internal sealed class ScaffoldOptions HelpText = $"Full pathname to the {Constants.ConfigFileName} file, default is '{Constants.ConfigFileName}' in currrent directory")] public FileInfo ConfigFile { get; set; } + [Option( + 'r', + "renamer", + HelpText = $"Full pathname to the {Constants.RenamingFileName} file, default is '{Constants.RenamingFileName}' in currrent directory")] + public FileInfo RenamingFile { get; set; } + public bool IsDacpac => ConnectionString?.EndsWith(".dacpac", StringComparison.OrdinalIgnoreCase) ?? false; } #pragma warning restore CA1812 // Avoid uninstantiated internal classes diff --git a/src/Core/efcpt.8/Program.cs b/src/Core/efcpt.8/Program.cs index ed16d42c1..43e9fd17a 100644 --- a/src/Core/efcpt.8/Program.cs +++ b/src/Core/efcpt.8/Program.cs @@ -49,6 +49,7 @@ public static async Task MainAsync(string[] args) var fileSystem = new FileSystem(); options.ConfigFile = options.ConfigFile ?? new FileInfo(fileSystem.Path.GetFullPath(Constants.ConfigFileName)); + options.RenamingFile = options.RenamingFile ?? new FileInfo(fileSystem.Path.GetFullPath(Constants.RenamingFileName)); DisplayHeader(options); var hostBuilder = new HostBuilder(); diff --git a/src/GUI/RevEng.Shared/Cli/CliConfigMapper.cs b/src/GUI/RevEng.Shared/Cli/CliConfigMapper.cs index e94aef7fb..1fc43b2c0 100644 --- a/src/GUI/RevEng.Shared/Cli/CliConfigMapper.cs +++ b/src/GUI/RevEng.Shared/Cli/CliConfigMapper.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -11,7 +11,14 @@ namespace RevEng.Common.Cli { public static class CliConfigMapper { - public static ReverseEngineerCommandOptions ToCommandOptions(this CliConfig config, string connectionString, DatabaseType databaseType, string projectPath, bool isDacpac, string configPath) + public static ReverseEngineerCommandOptions ToCommandOptions( + this CliConfig config, + string connectionString, + DatabaseType databaseType, + string projectPath, + bool isDacpac, + string configPath, + string renamingPath) { if (config is null) { @@ -33,6 +40,11 @@ public static ReverseEngineerCommandOptions ToCommandOptions(this CliConfig conf throw new ArgumentNullException(nameof(configPath)); } + if (string.IsNullOrEmpty(renamingPath)) + { + throw new ArgumentNullException(nameof(renamingPath)); + } + var selectedToBeGenerated = config.CodeGeneration.Type.ToUpperInvariant() switch { "DBCONTEXT" => 1, @@ -63,7 +75,7 @@ public static ReverseEngineerCommandOptions ToCommandOptions(this CliConfig conf IncludeConnectionString = !isDacpac && config.CodeGeneration.EnableOnConfiguring, SelectedToBeGenerated = selectedToBeGenerated, Dacpac = isDacpac ? connectionString : null, - CustomReplacers = GetNamingOptions(configPath), + CustomReplacers = GetNamingOptions(configPath, renamingPath), UseLegacyPluralizer = config.CodeGeneration.UseLegacyInflector, UncountableWords = replacements.UncountableWords?.ToList(), UseSpatial = typeMappings.UseSpatial, @@ -154,7 +166,7 @@ public static ReverseEngineerOptions ToOptions(this CliConfig config, string pro IncludeConnectionString = config.CodeGeneration.EnableOnConfiguring, SelectedToBeGenerated = selectedToBeGenerated, Dacpac = null, - CustomReplacers = GetNamingOptions(configPath), + CustomReplacers = GetNamingOptions(configPath, Constants.RenamingFileName), UseLegacyPluralizer = config.CodeGeneration.UseLegacyInflector, UncountableWords = replacements.UncountableWords?.ToList(), UseSpatial = typeMappings.UseSpatial, @@ -478,9 +490,9 @@ private static string GetDbContextNameSuggestion(string connectionString, Databa return DbContextNamer.GetDatabaseName(connectionString, databaseType) + "Context"; } - private static List GetNamingOptions(string configPath) + private static List GetNamingOptions(string configPath, string renamingFileName) { - var path = Path.Combine(Path.GetDirectoryName(configPath), "efpt.renaming.json"); + var path = Path.Combine(Path.GetDirectoryName(configPath), renamingFileName); if (!File.Exists(path)) { return new List(); diff --git a/src/GUI/RevEng.Shared/Constants.cs b/src/GUI/RevEng.Shared/Constants.cs index 36f559a1b..97270177a 100644 --- a/src/GUI/RevEng.Shared/Constants.cs +++ b/src/GUI/RevEng.Shared/Constants.cs @@ -3,4 +3,6 @@ public static class Constants { public const string ConfigFileName = "efcpt-config.json"; + public const string RenamingFileName = "efpt.renaming.json"; + } diff --git a/src/GUI/Shared/Extensions/ProjectExtensions.cs b/src/GUI/Shared/Extensions/ProjectExtensions.cs index 4b5cb8920..17f427d93 100644 --- a/src/GUI/Shared/Extensions/ProjectExtensions.cs +++ b/src/GUI/Shared/Extensions/ProjectExtensions.cs @@ -149,7 +149,7 @@ public static string GetRenamingPath(this Project project, string optionsPath, b renamingPath = Path.GetDirectoryName(optionsPath); } - const string efptRenamingJson = "efpt.renaming.json"; + const string efptRenamingJson = RevEng.Common.Constants.RenamingFileName; const string efptRenamingNavJson = "efpt.property-renaming.json"; return Path.Combine(renamingPath, navigationsFile ? efptRenamingNavJson : efptRenamingJson); } From c9dada37da7e50bd257b0a9f71575f6989566e3a Mon Sep 17 00:00:00 2001 From: Erik Ejlskov Jensen Date: Wed, 16 Oct 2024 17:23:30 +0200 Subject: [PATCH 2/2] fix build --- src/GUI/RevEng.Shared/Constants.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/GUI/RevEng.Shared/Constants.cs b/src/GUI/RevEng.Shared/Constants.cs index 97270177a..6e5aafa8a 100644 --- a/src/GUI/RevEng.Shared/Constants.cs +++ b/src/GUI/RevEng.Shared/Constants.cs @@ -4,5 +4,4 @@ public static class Constants { public const string ConfigFileName = "efcpt-config.json"; public const string RenamingFileName = "efpt.renaming.json"; - }