private static void Main()

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;
                    }
            }
        }