Ejemplo n.º 1
0
        static int MainImpl()
        {
            // Validate arguments.
            if (Global.Options.FilePattern == null || Global.Options.RegexPattern == null)
            {
                throw new ApplicationException("Please specify at least a pathspec and regex pattern.");
            }

            // Echo command line options.
            ConsoleWriter.Out.Write(@"Searching directory ""{0}"", files ""{1}"", for pattern ""{2}"" (options: ",
                                    Global.Options.BaseDirectory, Global.Options.FilePattern, Global.Options.RegexPattern);

            System.Collections.ArrayList optionstrings = new System.Collections.ArrayList();

            if (Global.Options.RegexIgnoreCase)
            {
                optionstrings.Add("IgnoreCase");
            }
            if (Global.Options.RegexSingleline)
            {
                optionstrings.Add("Singleline");
            }
            if (Global.Options.RegexMimicVS)
            {
                optionstrings.Add("RegexMimicVS");
            }
            if (Global.Options.IncludeHidden)
            {
                optionstrings.Add("IncludeHidden");
            }
            if (Global.Options.DoRecursion)
            {
                optionstrings.Add("DoRecursion");
            }
            optionstrings.Add(String.Format("OutputWidth: {0}", Global.Options.OutputWidth));
            if (Global.Options.ReplacementText != null)
            {
                optionstrings.Add(String.Format("Replacement pattern: {0}", Global.Options.ReplacementText));
            }

            if (optionstrings.Count == 0)
            {
                optionstrings.Add("none");
            }

            ConsoleWriter.Out.Write(String.Join(", ", (string[])optionstrings.ToArray(typeof(string))));
            ConsoleWriter.Out.WriteLine(")");

            // Reimplement VS's most useful helper patterns: C identifiers, number literals, and quoted strings.
            if (Global.Options.RegexMimicVS)
            {
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace("::", "\x003A");
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace(":i", @"(\b[_a-zA-Z][_a-zA-Z0-9]*\b)");
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace(":n", @"(\b[0-9]+(\.[0-9]+)?([Ee](\+|-)?[0-9]+)?\b)");
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace(":q", @"((@""(""""|[^""])*"")|(""(\\.|[^""\\])*""))");
            }

            // Create the regex, and populate the visitor callback with it.
            RegexOptions ro = RegexOptions.Compiled | RegexOptions.Multiline;

            if (Global.Options.RegexIgnoreCase)
            {
                ro |= RegexOptions.IgnoreCase;
            }
            if (Global.Options.RegexSingleline)
            {
                ro |= RegexOptions.Singleline;
            }

            FileVisitor visitor = new FileVisitor();

            visitor.UserRegex       = new Regex(Global.Options.RegexPattern, ro);
            visitor.ReplacementText = Global.Options.ReplacementText;

            visitor.OutputWidth = Global.Options.OutputWidth;

            // Do the dew!
            Jitsu.IO.DirectoryTraverser.FileVisitor onFile =
                new Jitsu.IO.DirectoryTraverser.FileVisitor(visitor.VisitFile);
            Jitsu.IO.DirectoryTraverser spider =
                new Jitsu.IO.DirectoryTraverser(null, onFile);

            string directoryPattern = (Global.Options.DoRecursion) ? "*" : String.Empty;

            spider.TraverseBreadthFirst(Global.Options.BaseDirectory, Global.Options.FilePattern, directoryPattern);

            // Report the totals.
            ConsoleWriter.Out.WriteLine();
            ConsoleWriter.Out.WriteLine("Total found: {0}    Matching files: {1}    Total files searched: {2}",
                                        visitor.MatchesFound, visitor.FilesFound, visitor.FilesSearched);

            // Done.
            return(0);
        }
Ejemplo n.º 2
0
    public static int MainImpl(string[] args)
    {
        // Load defaults from app.config.
        settings = new Settings();

        // Were any command line args specified?
        if (args.Length > 0)
        {
            // Override default settings with command line args.
            CommandLine.Parse(args, settings);
        }
        else
        {
            // Obtain arguments from UI.
            PromptForArgs dlg = new PromptForArgs(settings);

            if (dlg.ShowDialog() != DialogResult.OK)
            {
                return(1);
            }
        }

        // Validate arguments.
        if (settings.FilePattern == null ||
            settings.RegexPattern == null)
        {
            throw new ApplicationException("Please specify at least a pathspec and regex pattern.");
        }

        // Default basedir to cwd.
        if (settings.BaseDirectory == null ||
            settings.BaseDirectory == string.Empty)
        {
            settings.BaseDirectory = System.Environment.CurrentDirectory;
        }

        // Echo command line options.
        Console.Write(@"Searching directory ""{0}"", files ""{1}"", for pattern ""{2}"" (options: ", settings.BaseDirectory, settings.FilePattern, settings.RegexPattern);

        System.Collections.ArrayList optionstrings = new System.Collections.ArrayList();

        if (settings.RegexIgnoreCase)
        {
            optionstrings.Add("IgnoreCase");
        }
        if (settings.RegexSingleline)
        {
            optionstrings.Add("Singleline");
        }
        if (settings.RegexMimicVS)
        {
            optionstrings.Add("RegexMimicVS");
        }
        if (settings.ActiveReplace)
        {
            optionstrings.Add("ActiveReplace");
        }
        if (settings.ReplacementText != null)
        {
            optionstrings.Add(String.Format("Replacement pattern: {0}", settings.ReplacementText));
        }

        if (optionstrings.Count == 0)
        {
            optionstrings.Add("none");
        }

        Console.Write(String.Join(", ", (string[])optionstrings.ToArray(typeof(string))));
        Console.WriteLine(")");

        // Reimplement VS7's helper patterns for things like C identifiers, numbers, string literals, etc.
        if (settings.RegexMimicVS)
        {
            settings.RegexPattern = settings.RegexPattern.Replace("::", "\xFFFF");
            settings.RegexPattern = settings.RegexPattern.Replace(":i", @"([_a-zA-Z][_a-zA-Z0-9]*)");
            settings.RegexPattern = settings.RegexPattern.Replace(":n", @"(\b[-]?[0-9]+(\.[0-9]+([Ee](\+|-)?[0-9]+)?)?\b)");
            settings.RegexPattern = settings.RegexPattern.Replace(":q", @"((@""(""""|[^""])*"")|(""(\\.|[^""\\])*""))");
            settings.RegexPattern = settings.RegexPattern.Replace("\xFFFF", ":");
        }

        // Create the regex, and populate the visitor callback with it.
        RegexOptions ro = RegexOptions.Compiled | RegexOptions.Multiline;

        if (settings.RegexIgnoreCase)
        {
            ro |= RegexOptions.IgnoreCase;
        }
        if (settings.RegexSingleline)
        {
            ro |= RegexOptions.Singleline;
        }

        FileVisitor visitor = new FileVisitor();

        visitor.UserRegex       = new Regex(settings.RegexPattern, ro);
        visitor.ActiveReplace   = settings.ActiveReplace;
        visitor.ReplacementText = settings.ReplacementText;
        visitor.BackupDirectory = settings.BackupDirectory;

        visitor.OutputWidth = settings.OutputWidth;

        // Do the dew!
        Jitsu.IO.DirectoryTraverser.FileVisitor onFile =
            new Jitsu.IO.DirectoryTraverser.FileVisitor(visitor.VisitFile);
        Jitsu.IO.DirectoryTraverser spider =
            new Jitsu.IO.DirectoryTraverser(null, onFile);

        string directoryPattern = (settings.DontRecurse) ? "" : "*";

        spider.TraverseBreadthFirst(settings.BaseDirectory, settings.FilePattern, directoryPattern);

        // Report the results, in standard VS7 format.
        //Win32.TrySetConsoleColor(Win32.ConsoleColorFlags.ForegroundGray);
        Win32.TrySetConsoleColor(COLOUR.DEFAULT);


        Console.WriteLine();
        Console.WriteLine("Total found: {0}    Matching files: {1}    Total files searched: {2}",
                          visitor.MatchesFound, visitor.FilesFound, visitor.FilesSearched);

        // Done.
        return(0);
    }
Ejemplo n.º 3
0
    public static int MainImpl(string[] args)
    {
        // Load defaults from app.config.
        settings = new Settings();

        // Were any command line args specified?
        if (args.Length > 0)
        {
            // Override default settings with command line args.
            CommandLine.Parse(args,settings);
        }
        else
        {
            // Obtain arguments from UI.
            PromptForArgs dlg = new PromptForArgs(settings);

            if (dlg.ShowDialog() != DialogResult.OK)
                return 1;
        }

        // Validate arguments.
        if (settings.FilePattern == null ||
            settings.RegexPattern == null)
            throw new ApplicationException("Please specify at least a pathspec and regex pattern.");

        // Default basedir to cwd.
        if (settings.BaseDirectory == null ||
            settings.BaseDirectory == string.Empty)
            settings.BaseDirectory = System.Environment.CurrentDirectory;

        // Echo command line options.
        Console.Write(@"Searching directory ""{0}"", files ""{1}"", for pattern ""{2}"" (options: ", settings.BaseDirectory, settings.FilePattern, settings.RegexPattern );

        System.Collections.ArrayList optionstrings = new System.Collections.ArrayList();

        if (settings.RegexIgnoreCase)
            optionstrings.Add("IgnoreCase");
        if (settings.RegexSingleline)
            optionstrings.Add("Singleline");
        if (settings.RegexMimicVS)
            optionstrings.Add("RegexMimicVS");
        if (settings.ActiveReplace)
            optionstrings.Add("ActiveReplace");
        if (settings.ReplacementText != null)
            optionstrings.Add(String.Format("Replacement pattern: {0}",settings.ReplacementText));

        if (optionstrings.Count == 0)
            optionstrings.Add("none");

        Console.Write(String.Join(", ", (string[])optionstrings.ToArray(typeof(string))));
        Console.WriteLine(")");

        // Reimplement VS7's helper patterns for things like C identifiers, numbers, string literals, etc.
        if (settings.RegexMimicVS)
        {
            settings.RegexPattern = settings.RegexPattern.Replace("::", "\xFFFF");
            settings.RegexPattern = settings.RegexPattern.Replace(":i", @"([_a-zA-Z][_a-zA-Z0-9]*)");
            settings.RegexPattern = settings.RegexPattern.Replace(":n", @"(\b[-]?[0-9]+(\.[0-9]+([Ee](\+|-)?[0-9]+)?)?\b)");
            settings.RegexPattern = settings.RegexPattern.Replace(":q", @"((@""(""""|[^""])*"")|(""(\\.|[^""\\])*""))");
            settings.RegexPattern = settings.RegexPattern.Replace("\xFFFF", ":");
        }

        // Create the regex, and populate the visitor callback with it.
        RegexOptions ro = RegexOptions.Compiled|RegexOptions.Multiline;
        if (settings.RegexIgnoreCase)
            ro |= RegexOptions.IgnoreCase;
        if (settings.RegexSingleline)
            ro |= RegexOptions.Singleline;

        FileVisitor visitor = new FileVisitor();
        visitor.UserRegex = new Regex(settings.RegexPattern, ro);
        visitor.ActiveReplace = settings.ActiveReplace;
        visitor.ReplacementText = settings.ReplacementText;
        visitor.BackupDirectory = settings.BackupDirectory;

        visitor.OutputWidth = settings.OutputWidth;

        // Do the dew!
        Jitsu.IO.DirectoryTraverser.FileVisitor onFile =
            new Jitsu.IO.DirectoryTraverser.FileVisitor(visitor.VisitFile);
        Jitsu.IO.DirectoryTraverser spider =
            new Jitsu.IO.DirectoryTraverser(null,onFile);

        string directoryPattern = (settings.DontRecurse) ? "" : "*";
        spider.TraverseBreadthFirst(settings.BaseDirectory,settings.FilePattern,directoryPattern);

        // Report the results, in standard VS7 format.
        //Win32.TrySetConsoleColor(Win32.ConsoleColorFlags.ForegroundGray);
        Win32.TrySetConsoleColor( COLOUR.DEFAULT );

        Console.WriteLine();
        Console.WriteLine("Total found: {0}    Matching files: {1}    Total files searched: {2}",
            visitor.MatchesFound, visitor.FilesFound, visitor.FilesSearched);

        // Done.
        return 0;
    }
Ejemplo n.º 4
0
        static int MainImpl()
        {
            // Validate arguments.
            if ( Global.Options.FilePattern == null || Global.Options.RegexPattern == null )
                throw new ApplicationException( "Please specify at least a pathspec and regex pattern." );

            // Echo command line options.
            ConsoleWriter.Out.Write( @"Searching directory ""{0}"", files ""{1}"", for pattern ""{2}"" (options: ",
                Global.Options.BaseDirectory, Global.Options.FilePattern, Global.Options.RegexPattern );

            System.Collections.ArrayList optionstrings = new System.Collections.ArrayList();

            if ( Global.Options.RegexIgnoreCase )
                optionstrings.Add( "IgnoreCase" );
            if ( Global.Options.RegexSingleline )
                optionstrings.Add( "Singleline" );
            if ( Global.Options.RegexMimicVS )
                optionstrings.Add( "RegexMimicVS" );
            if ( Global.Options.IncludeHidden )
                optionstrings.Add( "IncludeHidden" );
            if ( Global.Options.DoRecursion )
                optionstrings.Add( "DoRecursion" );
            optionstrings.Add( String.Format( "OutputWidth: {0}", Global.Options.OutputWidth ) );
            if ( Global.Options.ReplacementText != null )
                optionstrings.Add( String.Format( "Replacement pattern: {0}", Global.Options.ReplacementText ) );

            if ( optionstrings.Count == 0 )
                optionstrings.Add( "none" );

            ConsoleWriter.Out.Write( String.Join( ", ", (string[])optionstrings.ToArray( typeof( string ) ) ) );
            ConsoleWriter.Out.WriteLine( ")" );

            // Reimplement VS's most useful helper patterns: C identifiers, number literals, and quoted strings.
            if ( Global.Options.RegexMimicVS )
            {
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace( "::", "\x003A" );
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace( ":i", @"(\b[_a-zA-Z][_a-zA-Z0-9]*\b)" );
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace( ":n", @"(\b[0-9]+(\.[0-9]+)?([Ee](\+|-)?[0-9]+)?\b)" );
                Global.Options.RegexPattern = Global.Options.RegexPattern.Replace( ":q", @"((@""(""""|[^""])*"")|(""(\\.|[^""\\])*""))" );
            }

            // Create the regex, and populate the visitor callback with it.
            RegexOptions ro = RegexOptions.Compiled | RegexOptions.Multiline;
            if ( Global.Options.RegexIgnoreCase )
                ro |= RegexOptions.IgnoreCase;
            if ( Global.Options.RegexSingleline )
                ro |= RegexOptions.Singleline;

            FileVisitor visitor = new FileVisitor();
            visitor.UserRegex = new Regex( Global.Options.RegexPattern, ro );
            visitor.ReplacementText = Global.Options.ReplacementText;

            visitor.OutputWidth = Global.Options.OutputWidth;

            // Do the dew!
            Jitsu.IO.DirectoryTraverser.FileVisitor onFile =
                new Jitsu.IO.DirectoryTraverser.FileVisitor( visitor.VisitFile );
            Jitsu.IO.DirectoryTraverser spider =
                new Jitsu.IO.DirectoryTraverser( null, onFile );

            string directoryPattern = ( Global.Options.DoRecursion ) ? "*" : String.Empty;
            spider.TraverseBreadthFirst( Global.Options.BaseDirectory, Global.Options.FilePattern, directoryPattern );

            // Report the totals.
            ConsoleWriter.Out.WriteLine();
            ConsoleWriter.Out.WriteLine( "Total found: {0}    Matching files: {1}    Total files searched: {2}",
                visitor.MatchesFound, visitor.FilesFound, visitor.FilesSearched );

            // Done.
            return 0;
        }