예제 #1
0
        public static int ListCommand(ListCommandOptions options)
        {
            AssemblyDefinition assemblyDef = AssemblyDefinition.ReadAssembly(options.Assembly);

            if (options.Verbose)
            {
                Console.Error.WriteLine("Loaded assembly " + assemblyDef);
            }

            Collection <Resource> resources = assemblyDef.MainModule.Resources;

            Console.WriteLine("\nResource Name");
            Console.WriteLine("-------------");

            foreach (EmbeddedResource resource in resources)
            {
                Console.WriteLine($"{resource.Name}");
            }

            Console.WriteLine();

            return(0);
        }
예제 #2
0
        private Task ListCommand(ListCommandOptions options)
        {
            FolderNode node = null;

            if (!string.IsNullOrEmpty(_currentFolder))
            {
                _vault.TryGetFolder(_currentFolder, out node);
            }
            if (node == null)
            {
                node = _vault.Root;
            }

            if (options.Details)
            {
                if (node.Children.Count > 0)
                {
                    var tab = new Tabulate(2)
                    {
                        DumpRowNo = true
                    };
                    tab.AddHeader(new string[] { "Folder UID", "Name" });
                    foreach (var uid in node.Children)
                    {
                        if (_vault.TryGetFolder(uid, out FolderNode f))
                        {
                            tab.AddRow(new string[] { f.FolderUid, f.Name });
                        }
                    }

                    tab.Sort(1);
                    tab.Dump();
                }

                if (node.Records.Count > 0)
                {
                    var tab = new Tabulate(4)
                    {
                        DumpRowNo = true
                    };
                    tab.AddHeader(new string[] { "Record UID", "Title", "Login", "URL" });
                    foreach (var uid in node.Records)
                    {
                        if (_vault.TryGetRecord(uid, out PasswordRecord r))
                        {
                            tab.AddRow(new string[] { r.Uid, r.Title, r.Login, r.Link });
                        }
                    }

                    tab.Sort(1);
                    tab.Dump();
                }
            }
            else
            {
                List <string> names = new List <string>();
                foreach (var uid in node.Children)
                {
                    if (_vault.TryGetFolder(uid, out FolderNode subnode))
                    {
                        names.Add(subnode.Name + "/");
                    }
                }
                names.Sort(StringComparer.InvariantCultureIgnoreCase);
                int len = names.Count;
                foreach (var uid in node.Records)
                {
                    if (_vault.TryGetRecord(uid, out PasswordRecord record))
                    {
                        names.Add(record.Title);
                    }
                }
                names.Sort(len, names.Count - len, StringComparer.InvariantCultureIgnoreCase);
                if (names.Count > 0)
                {
                    len = names.Select(x => x.Length).Max();
                    if (len < 16)
                    {
                        len = 16;
                    }
                    len += 2;
                    int columns = Console.BufferWidth / len;
                    if (columns < 1)
                    {
                        columns = 1;
                    }
                    int columnWidth = Console.BufferWidth / columns;
                    int colNo       = 0;
                    for (int i = 0; i < names.Count; i++)
                    {
                        Console.Write(names[i].PadRight(columnWidth - 1));
                        colNo++;
                        if (colNo >= columns)
                        {
                            Console.WriteLine();
                            colNo = 0;
                        }
                    }
                }
            }

            return(Task.FromResult(true));
        }