Exemple #1
0
        public ConsoleColor GetColor(out string qualifier, ConsoleColor defaultColor,
                                     IFileSystemInfoFactory factory, ILinkManager manager)
        {
            qualifier = string.Empty;
            ConsoleColor entryColor = defaultColor;
            string       target;

            if (manager.TryGetLink(Info, out target))
            {
                var targetInfo = factory.Build(target);
                if (targetInfo.Exists)
                {
                    entryColor = ConsoleColor.Cyan;
                    qualifier  = "@";
                }
                else
                {
                    entryColor = ConsoleColor.Red;
                    qualifier  = "@";
                }
            }
            else if (Info.Attributes.HasFlag(FileAttributes.Directory))
            {
                entryColor = ConsoleColor.Blue;
                qualifier  = "/";
            }
            else if (Info.Attributes.HasFlag(FileAttributes.System))
            {
                entryColor = ConsoleColor.DarkYellow;
            }
            else if (Info.Attributes.HasFlag(FileAttributes.Compressed) ||
                     Info.Attributes.HasFlag(FileAttributes.Archive) ||
                     Info.IsCompressionExtension())
            {
                entryColor = ConsoleColor.Magenta;
            }
            else if (Info.IsExecutable(ClaimsPrincipal.Current.Identity.Name))
            {
                entryColor = ConsoleColor.Green;
                qualifier  = "*";
            }
            return(entryColor);
        }
Exemple #2
0
        private void DirectoryListing(string directory, bool showHidden, bool showColors, bool showList)
        {
            var extendedEntries = _directory.GetFileSystemEntries(directory).Select(x => _factory.Build(x))
                                  .Select(x => new ExtendedEntryInfo(x, showList)).ToList();

            if (showList)
            {
                var rightsPadding = extendedEntries.Max(x => x.Rights.Length) + 1;
                var childPadding  = extendedEntries.Max(x => x.ChildNumber.ToString().Length) + 1;
                var ownerPadding  = extendedEntries.Max(x => x.Owner.Length) + 1;
                var groupPadding  = extendedEntries.Max(x => x.Group.Length) + 1;
                var sizePadding   = extendedEntries.Max(x => x.Size.ToString().Length) + 1;
                var datePadding   = extendedEntries.Max(x => x.Date.Length) + 1;
                foreach (var extendedEntry in extendedEntries)
                {
                    extendedEntry.RightsPadding = rightsPadding;
                    extendedEntry.ChildPadding  = childPadding;
                    extendedEntry.OwnerPadding  = ownerPadding;
                    extendedEntry.GroupPadding  = groupPadding;
                    extendedEntry.SizePadding   = sizePadding;
                    //extendedEntry.DatePadding = datePadding;
                }
            }
            foreach (var entry in extendedEntries)
            {
                string       qualifier  = string.Empty;
                ConsoleColor entryColor = _console.ForegroundColor;
                if (showColors)
                {
                    entryColor = entry.GetColor(out qualifier, _console.ForegroundColor, _factory, _linkManager);
                }
                if (showHidden || !entry.Info.IsHidden())
                {
                    Write(entryColor, entry, qualifier, showList);
                }
            }
        }