in ironclad-apps/tools/NuBuild/ItemCacheTool/Program.cs [28:155]
private static void Main(string[] args)
{
CacheState caches = new CacheState();
string query;
IItemCache[] queriedCaches;
ItemCacheContainer[] queriedContainers;
string queriedItems;
DateTimeOffset queriedDate;
// -
// Default values.
// This corresponds to "status * *".
// -
query = "status";
queriedCaches = caches.GetAllCaches;
queriedContainers = caches.GetAllContainers;
queriedItems = string.Empty;
queriedDate = DateTimeOffset.MinValue;
// -
// Parse arguments.
// -
if (args.Length != 0)
{
if (args.Length != 3)
{
if (args.Length == 4)
{
if (!DateTimeOffset.TryParse(args[3], out queriedDate))
{
queriedItems = args[3];
}
}
else
{
Usage(caches);
return;
}
}
query = args[0];
queriedCaches = caches.ParseCacheName(args[1]);
queriedContainers = caches.ParseContainerName(args[2]);
if ((queriedCaches == null) || (queriedContainers == null))
{
Usage(caches);
return;
}
}
// -
// Process request.
// -
switch (query)
{
case "list":
case "List":
{
CacheStatus(queriedCaches, queriedContainers, true);
break;
}
case "compare":
case "Compare":
{
if (queriedCaches.Length < 2)
{
Console.WriteLine("Error: can't compare fewer than two caches!");
Usage(caches);
return;
}
CompareCacheContainers(queriedCaches, queriedContainers);
break;
}
case "status":
case "Status":
{
CacheStatus(queriedCaches, queriedContainers, false);
break;
}
case "delete":
case "Delete":
{
if (args.Length < 4)
{
Console.WriteLine("Error: missing argument. Need date earlier than or specific item(s) to delete.");
Usage(caches);
return;
}
if (queriedDate == DateTimeOffset.MinValue)
{
DeleteItems(queriedCaches, queriedContainers, queriedItems);
}
else
{
DeleteItems(queriedCaches, queriedContainers, queriedDate);
}
break;
}
case "check":
case "Check":
{
CheckResults(queriedCaches, false);
break;
}
case "cleanup":
case "Cleanup":
{
CheckResults(queriedCaches, true);
break;
}
case "dump":
case "Dump":
{
DumpItems(queriedCaches, queriedContainers, queriedItems);
break;
}
}
}