private static void ImportFromConfigFile() { string connectionString = AppConfigReader.GetString("Database", "ConnectionString"); if (!string.IsNullOrEmpty(connectionString)) { ConnectionString = connectionString; } string database = AppConfigReader.GetStringOrDefault("Database", "Database"); if (!string.IsNullOrEmpty(database)) { Database = database; } string runUpgradeScripts = AppConfigReader.GetStringOrDefault("UpgradeScripts", "Enabled"); RunUpgradeScripts = string.Equals(runUpgradeScripts, "true", StringComparison.InvariantCultureIgnoreCase); string upgradeScriptDirectory = AppConfigReader.GetStringOrDefault("UpgradeScripts", "ScriptDirectory"); if (!string.IsNullOrEmpty(upgradeScriptDirectory)) { UpgradeScriptDirectory = upgradeScriptDirectory; } string upgradeFileRegex = AppConfigReader.GetStringOrDefault("UpgradeScripts", "ScriptFileRegex"); if (upgradeFileRegex != null) { UpgradeScriptFileRegex = upgradeFileRegex; } string runCodeGeneration = AppConfigReader.GetStringOrDefault("CodeGeneration", "Enabled"); RunEntityCodeGeneration = string.Equals(runCodeGeneration, "true", StringComparison.InvariantCultureIgnoreCase); string codeTemplateDirectory = AppConfigReader.GetStringOrDefault("CodeGeneration", "TemplateDirectory"); if (!string.IsNullOrEmpty(codeTemplateDirectory)) { TemplateDirectory = codeTemplateDirectory; } string[] databaseSchemas = AppConfigReader.GetArrayOrDefault("CodeGeneration", "DatabaseSchemas"); if (databaseSchemas != null) { DatabaseSchemas = databaseSchemas; } string runCodeBuild = AppConfigReader.GetStringOrDefault("CodeBuild", "Enabled"); RunCodeBuild = string.Equals(runCodeBuild, "true", StringComparison.InvariantCultureIgnoreCase); string doLogging = AppConfigReader.GetStringOrDefault("Logging", "Enabled"); DoLogging = string.Equals(doLogging, "true", StringComparison.InvariantCultureIgnoreCase); string logFile = AppConfigReader.GetStringOrDefault("Logging", "LogFile"); if (!string.IsNullOrEmpty(logFile)) { SetLogFile(logFile); } string logMessagePrefix = AppConfigReader.GetStringOrDefault("Logging", "LogLinePrefix"); if (logMessagePrefix != null) { LogMessagePrefix = logMessagePrefix; } string verboseLogging = AppConfigReader.GetStringOrDefault("Logging", "Verbose"); VerboseLogging = string.Equals(verboseLogging, "true", StringComparison.InvariantCultureIgnoreCase); }
public static void ProcessArguments(string[] args) { SetDefaultConfiguration(); try { for (int i = 0; i < args.Length; i++) { string arg = args[i].ToLower(); switch (arg) { case HelpSwitch: PrintHelpPage(); Environment.Exit((int)ExitCode.OK); break; case ConfigFileSwitch: AppConfigReader.LoadConfigurationFromFile(args[++i]); ImportFromConfigFile(); break; // Upgrade Script options case UpgradeScriptSwitch: RunUpgradeScripts = true; break; case UpgradeScriptDirectorySwitch: UpgradeScriptDirectory = args[++i]; break; case UpgradeScriptFileRegexSwitch: UpgradeScriptFileRegex = args[++i]; break; case UpgradeScriptTemplateGuidMonikerSwitch: UpgradeScriptTemplateGuidMonikerPrefix = args[++i]; break; // Entity code generation options case EntityCodeGenerationSwitch: RunEntityCodeGeneration = true; break; case TemplateDirectorySwitch: TemplateDirectory = args[++i]; break; case DatabaseSchemaListSwitch: DatabaseSchemas = args[++i].Split(';'); break; case CodeGenOutputSwitch: EntityCodeOutputDirectory = args[++i]; break; // Code build options case CodeBuildSwitch: RunCodeBuild = true; break; case ProjectNameSwitch: ProjectName = args[++i]; break; // Logging options case LogFileSwitch: DoLogging = true; SetLogFile(args[++i]); break; case DebugSwitch: case VerboseLoggingSwitch: VerboseLogging = true; break; case LogMessagePrefixSwitch: LogMessagePrefix = args[++i]; break; // Database options case DatabaseConnectionStringSwitch: ConnectionString = args[++i]; break; case DatabaseSwitch: Database = args[++i]; break; } } CheckDatabase(); if (DatabaseSchemas.Contains("*")) { string schemaQuery = $"USE [{Database}] " + "SELECT DISTINCT s.[name] FROM sys.tables t " + "INNER JOIN sys.schemas s ON s.schema_id = t.schema_id " + "WHERE s.[name] != 'dbo' " + "UNION ALL SELECT 'dbo'"; var queryResults = SQLInterface.ExecuteQueryIntoDataTable(schemaQuery); string result = ""; foreach (DataRow row in queryResults.Rows) { result += row.ItemArray[0].ToString() + ","; } DatabaseSchemas = result.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); } } catch (Exception e) { Console.WriteLine($"ERROR: {e.Message}"); PrintHelpPage(); Environment.Exit((int)ExitCode.ArgumentError); } }