Ejemplo n.º 1
0
        static public void PrintDir(string dirname, Func <string, bool> filterThe)
        {
            var cntDir  = 0;
            var enumDir = SafeGetDirectoryEnumerator(dirname);

            while (SafeMoveNext(enumDir))
            {
                var currentDirname = SafeGetCurrent(enumDir);
                if (string.IsNullOrEmpty(currentDirname))
                {
                    continue;
                }
                var nameThe = Path.GetFileName(currentDirname);
                if (Opts.ExclDirnameFilter.Func(nameThe))
                {
                    continue;
                }
                if (!filterThe(nameThe))
                {
                    continue;
                }
                Console.Write(Opts.ItemText(
                                  $"[DIR] {InfoFile.RelativePath(currentDirname)}"));
                cntDir += 1;
            }
            if (cntDir > 1)
            {
                Console.Write(Opts.TotalText(
                                  $"{cntDir} directories are found."));
                Console.Write(Opts.TotalText(""));
            }
        }
Ejemplo n.º 2
0
        static public Func <string, bool> ToWildMatch(string arg)
        {
            var regText = new StringBuilder("^");

            regText.Append(arg
                           .Replace(@"\", @"\\")
                           .Replace("^", @"\^")
                           .Replace("$", @"\$")
                           .Replace(".", @"\.")
                           .Replace("?", ".")
                           .Replace("*", ".*")
                           .Replace("(", @"\(")
                           .Replace(")", @"\)")
                           .Replace("[", @"\[")
                           .Replace("]", @"\]")
                           .Replace("{", @"\{")
                           .Replace("}", @"\}"));
            regText.Append("$");
            var regThe = Opts.MakeRegex(regText.ToString());

            return((it) => regThe.Match(it).Success);
        }
Ejemplo n.º 3
0
        static void MainRun(string[] argsMain)
        {
            if (OnlineHelp.IsShow(argsMain))
            {
                return;
            }

            var args = Opts.Parsers
                       .Aggregate(Opts.LoadConfig(argsMain).ExpandShortcut(),
                                  (it, opt) => opt.Parse(it))
                       .ToArray();

            Opts.EncodeConsoleOuput.Func(true);

            var baseDir = Directory.GetCurrentDirectory();

            if (args.Length > 0 && Directory.Exists(args[0]))
            {
                baseDir = Path.GetFullPath(args[0]);
                args    = args.Skip(1).ToArray();
            }
            else if (args.Length == 1)
            {
                var dirThe = Path.GetDirectoryName(args[0]);
                if (!string.IsNullOrEmpty(dirThe))
                {
                    baseDir = Path.GetFullPath(dirThe);
                    args    = new string[] { Path.GetFileName(args[0]) };
                }
            }

            args = Opts.ParseFilenameFilter(args);

            InfoFile.InitDir(baseDir);

            var sum = Opts.GetFiles.Func(baseDir)
                      .Where((it) =>
            {
                var filename = Path.GetFileName(it);
                return(Opts.FilenameFilter.Func(filename) &&
                       Opts.FileExtFilter.Func(filename) &&
                       !Opts.ExclFilenameFilter.Func(filename));
            })
                      .Select((it) => InfoFile.From(it))
                      .Where((it) => it.IsNotNone)
                      .Where((it) => Opts.MinFileSizeFilter.Func(it.Length))
                      .Where((it) => Opts.MaxFileSizeFilter.Func(it.Length))
                      .Where((it) => Opts.MinFileDateFilter.Func(it.DateTime))
                      .Where((it) => Opts.MaxFileDateFilter.Func(it.DateTime))
                      .Where((it) => Opts.HiddenFilter.Func(it))
                      .Invoke(Opts.SumBy);

            if (sum.AddCount == 0)
            {
                Console.Write(Opts.TotalText("No file is found."));
            }
            else if (sum.AddCount > 1)
            {
                Console.Write(Opts.TotalText(sum.ToString()));
            }

            foreach (var arg in args)
            {
                Console.WriteLine($"Unknown opt '{arg}'");
            }

            return;
        }