static int Main(string[] args)
        {
            if (args.Length == 0)
            {
                PrintHelp();
                return(0);
            }
            Options opt = new Options();

            if (!TryLoadOptionFromArgs(ref opt, args))
            {
                return(1);
            }
            PackageDependencyGraph graph = new PackageDependencyGraph();
            Searcher mapper = new Searcher(graph, opt);

            mapper.Search();

            if (!String.IsNullOrEmpty(opt.OutputPackageTreeDown))
            {
                if (opt.OutputPackageTreeDown == "all")
                {
                    foreach (var p in graph.AllRootPackage)
                    {
                        PrintVersionTreeDown(new TreePrintFrame(), p);
                    }
                }
                if (graph.AllPackage.TryGetValue(opt.OutputPackageTreeDown, out var pack))
                {
                    PrintVersionTreeDown(new TreePrintFrame(), pack);
                }
            }
            return(0);
        }
 public Searcher(PackageDependencyGraph graph, Options options)
 {
     Graph         = graph;
     SearchOptions = options;
 }