static void Main(string[] args) { Program.WriteLine($"AzurePoolCrossDbGenerator started in {Directory.GetCurrentDirectory()} with params:"); string command = (args.Length > 0) ? args[0]?.Trim().ToLowerInvariant() : ""; // must be a valid command Program.WriteLine($"Command: {command}"); string paramTemplate = null, paramConfig = null, paramGrepFileName = null, paramTargetDir = null, paramRunOn = null, paramCSLatest = null, paramCSBase = null, paramFileWithListOfItems = null; // extract additional params for (int i = 1; i < args.Length - 1; i++) { switch (args[i]) { case "-t": { paramTemplate = args[i + 1]; Program.WriteLine($"Template: {paramTemplate}"); break; } case "-c": { paramConfig = args[i + 1]; Program.WriteLine($"Config: {paramConfig}"); break; } case "-g": { paramGrepFileName = args[i + 1]; Program.WriteLine($"Grep: {paramGrepFileName}"); break; } case "-d": { paramTargetDir = args[i + 1]; Program.WriteLine($"Target dir: {paramTargetDir}"); break; } case "-o": { paramRunOn = args[i + 1]; Program.WriteLine($"Run on: {paramRunOn}"); break; } case "-csl": { paramCSLatest = args[i + 1]; Program.WriteLine($"Connection string, DB to extract from: {paramCSLatest}"); break; } case "-csb": { paramCSBase = args[i + 1]; Program.WriteLine($"Connection string, DB to compare to: {paramCSBase}"); break; } case "-l": { paramFileWithListOfItems = args[i + 1]; Program.WriteLine($"File with list of items: {paramFileWithListOfItems}"); break; } } } // validate the params if (string.IsNullOrEmpty(command)) { PrintWelcomeMsg(); } // call the handler for the command switch (command) { case Commands.GenerateBlankConfigFiles: { Generators.GenerateBlankConfigs(); break; } case Commands.GenerateSecondaryConfigFiles: { Generators.GenerateSecondaryConfigFiles(Configs.InitialConfig.Load(paramConfig)); break; } case Commands.GenerateMasterKeys: { Generators.CreateMasterKey(Configs.CreateMasterKey.Load(paramConfig)); break; } case Commands.GenerateExternalDataSources: { Generators.CreateExternalDataSource(Configs.CreateExternalDataSource.Load(paramConfig)); break; } case Commands.ScriptGenerationForTablesAnsSPs: { Generators.GenerateScript(Configs.AllTables.Load(paramConfig), paramTemplate, paramRunOn); break; } case Commands.ScriptGenerationGeneric: { Generators.GenerateScript(Configs.InitialConfig.Load(paramConfig), paramTemplate); break; } case Commands.ScriptGenerationExtractFromDb: { Generators.ExtractScriptsFromDb(paramCSLatest, paramCSBase, paramFileWithListOfItems); break; } case Commands.AltTableColumnTypes: { Generators.GenerateAltColumnsScript(Configs.AllTables.Load(paramConfig)); break; } case Commands.GenerateSqlCmdBatch: { Generators.GenerateSqlCmdBatch(Configs.InitialConfig.Load(paramConfig), paramTargetDir, paramRunOn); break; } case Commands.ReplaceInSqlFiles: { Generators.SearchAndReplace(Configs.InitialConfig.Load(paramConfig), paramGrepFileName, paramTemplate); break; } default: { PrintWelcomeMsg(); break; } } ExitApp(0); }