internal static int Main(string[] args)
{
if (args.Length == 0)
{
HelpText.Output();
return((int)ExitCode.InvalidCommand);
}
try
{
var argsQueue = new Queue <string>(args);
var nextArg = argsQueue.Dequeue();
// get the url from the command line
string url = "http://localhost:8080";
if (nextArg.ToUpper() == "/U")
{
nextArg = argsQueue.Dequeue();
if (!nextArg.StartsWith("http", true, null))
{
HelpText.Output();
return((int)ExitCode.InvalidCommand);
}
url = nextArg;
nextArg = argsQueue.Dequeue();
}
// get a document store to work with
var documentStore = GetDocumentStore(url);
// handle each command
switch (nextArg.ToUpper())
{
case "TOUCH":
if (argsQueue.Count == 0)
{
goto default;
}
// get the database names from the command line
var dbNames = argsQueue.ToList();
// if we specified all databases with all -all or /all then touch all databases
if (dbNames.Any(x => x.Equals("/ALL", StringComparison.OrdinalIgnoreCase)))
{
Toucher.TouchAllDatabases(documentStore);
return((int)ExitCode.Success);
}
// touch just the databases we specified
Toucher.TouchDatabases(documentStore, dbNames);
return((int)ExitCode.Success);
default:
HelpText.Output();
return((int)ExitCode.InvalidCommand);
}
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex.Message);
return((int)ExitCode.Failure);
}
}