public Arguments(string[] args) { if (args.Length >= 1) { Source = args[0]; } for (int i = 1; i < args.Length; i++) { string undefinedArg = null; try { switch (args[i].ToLower()) { case "-c": case "--credentials": i++; CredentialsFile = args[i]; break; case "-o": case "--output": i++; OutputFormat = args[i]; break; case "-f": case "--file": i++; OutputFile = args[i]; break; case "-s": case "--sql": i++; SqlConnectionString = args[i]; break; case "-t": case "--table": i++; TableName = args[i]; break; case "-a": case "--action": i++; SqlAction = args[i]; break; case "-w": case "--window": OutputToWindow = true; break; default: undefinedArg = args[i]; break; } if (undefinedArg != null) { if (i == 1) { QueryName = args[i]; } else { throw new Exception($"Undefined argument: {args[i]}"); } } } catch (IndexOutOfRangeException) { throw new Exception($"Missing parameter for {args[i]}"); } } if (!File.Exists(Source) && !Directory.Exists(Source)) { throw new Exception($"Source not found: {Source}"); } if (File.Exists(Source)) { SourceFileExtension = Path.GetExtension(Source); } //OutputFlags = ExecuteOutputFlags.DataTable; if (!string.IsNullOrWhiteSpace(OutputFormat) || !string.IsNullOrWhiteSpace(OutputFile) ) { if (string.IsNullOrWhiteSpace(OutputFormat)) { string outputFileExtension = Path.GetExtension(OutputFile); OutputFormat = outputFileExtension.Substring(1); } switch (OutputFormat.ToLower()) { case "csv": OutputFlags = ExecuteOutputFlags.Csv; break; case "json": OutputFlags = ExecuteOutputFlags.Json; break; case "html": OutputFlags = ExecuteOutputFlags.Html; break; case "xml": OutputFlags = ExecuteOutputFlags.Xml; break; default: throw new Exception($"Unsupported output format: {OutputFormat}"); } } if (!string.IsNullOrWhiteSpace(SqlConnectionString)) { switch (SqlAction.ToLower()) { case "": SqlTableAction = SqlTableAction.Create; break; case "c": SqlTableAction = SqlTableAction.Create; break; case "dc": SqlTableAction = SqlTableAction.DropAndCreate; break; case "di": SqlTableAction = SqlTableAction.DeleteAndInsert; break; case "i": SqlTableAction = SqlTableAction.Insert; break; case "ti": SqlTableAction = SqlTableAction.TruncateAndInsert; break; default: throw new Exception($"Unsupported action: {SqlAction}"); } if (OutputFlags == null) { OutputFlags = ExecuteOutputFlags.Sql; } else { OutputFlags |= ExecuteOutputFlags.Sql; } } if (OutputFlags == null) { OutputFlags = ExecuteOutputFlags.DataTable; OutputToWindow = true; } if (string.IsNullOrWhiteSpace(QueryName) && SourceFileExtension == ".pq") { QueryName = Path.GetFileNameWithoutExtension(Source); } if (string.IsNullOrWhiteSpace(QueryName)) { throw new Exception($"Query name must be defined."); } if (string.IsNullOrWhiteSpace(TableName)) { TableName = QueryName; } }