/// <summary> /// For finding and replacing, this gets data from the requested input stream /// </summary> /// <returns>Input stream</returns> private static System.IO.TextReader GetInputStream() { System.IO.TextReader retVal; if (Cmdline.Has("guid")) // user given guid on commandline { #if NET2_0 || NET3_5 retVal = new System.IO.StringReader(string.Join("\r\n", Cmdline.Get("guid").Values.ToArray())); #else retVal = new System.IO.StringReader(string.Join("\r\n", Cmdline.Get("guid").Values)); #endif } else if (Cmdline.Has("clipboard")) // gets guids from clipboard { retVal = new System.IO.StringReader(Tools.GetClipboard()??""); } else if (Cmdline.Has("file")) { retVal = new System.IO.StreamReader(Cmdline.Get("file").Value); } else if (ConsoleEx.InputRedirected && Console.In.Peek() != -1) // gets data via pipe syntax { retVal = Console.In; } else // reformatter - waits for input from user typing/pasting { Console.WriteLine("Type \"quit\" to quit"); retVal = new ConsoleExitStream(); } return retVal; }
static void Main(string[] args) { try { if (Cmdline.Has("sleep")) { int timeout = Tools.Convert(Cmdline.Get("sleep").Value, 1000); if (timeout>0) System.Threading.Thread.Sleep(timeout); } if (Cmdline.Has("?") || Cmdline.Has("help")) { WriteHelp(); return; } string type = null; if (!Cmdline.Get(0).IsSwitch) { type = Cmdline.Get(0).Value; if (!GuidFormats.IsValid(type)) { WriteHelp("Format Not Found: " + type); } } bool upcase = false; if (Cmdline.Has("u")) upcase=true; int count = -1; if (Cmdline.Has("n")) count = Tools.Convert(Cmdline.Get("n").Value, 1); else if (Cmdline.Has("count")) count = Tools.Convert(Cmdline.Get("count").Value, 1); Guider guider = null; if (Cmdline.Has("z")) guider = Guider.NewZeroGuid; else if (Cmdline.Has("s")) guider = Guider.NewSequentialGuid; else if (Cmdline.Has("g")) guider = Guider.NewGuid; bool isFindOrReplace = Cmdline.Has("find") || Cmdline.Has("replace") || Cmdline.Has("replacebyline"); if (!isFindOrReplace) { if (type==null) type="D"; if (guider == null) guider = Guider.NewGuid; if (count < 0) count = 1; guider.Count = count; string output = GuidFormats.Format(type, guider, upcase, count>1); if (!Cmdline.Has("nocopy")) System.Windows.Forms.Clipboard.SetData(System.Windows.Forms.DataFormats.Text, output); Console.WriteLine(output); } else if (isFindOrReplace) { if (guider == null) guider = Guider.AsCurrent(); guider.Count = count; System.IO.TextReader from; if (Cmdline.Has("guid")) { from = new System.IO.StringReader(string.Join("\r\n", Cmdline.Get("guid").Values)); } else if (Cmdline.Has("clipboard")) { from = new System.IO.StringReader(System.Windows.Forms.Clipboard.GetText()); } else if (ConsoleEx.InputRedirected && Console.In.Peek() != -1) { from = Console.In; } else { Console.Write("Type \"quit\" to quit"); from = new ConsoleExitStream(); } if (Cmdline.Has("find")) { List<Found> items = new List<Found>(); GuidSearcher.Search(Cmdline.Get("find").Value, from, items); List<Guid> guids = new List<Guid>(); foreach(Found item in items) { guids.AddRange(item.Guids); Console.WriteLine(((Cmdline.Has("l"))?((item.Line+1).ToString()+". "):"") + item.Match); if (type != null) { foreach (Guid g in item.Guids) { string formatted = GuidFormats.Format(type, g, upcase, true); if (formatted != item.Match) Console.WriteLine("\t" + formatted); } } } if (Cmdline.Has("copy")) System.Windows.Forms.Clipboard.SetData(System.Windows.Forms.DataFormats.Text, GuidFormats.Format(type, guids, upcase, true)); } else // Cmdline.Has("replace") { Dictionary<Guid, Guid> replacements = new Dictionary<Guid,Guid>(); if (Cmdline.Has("replacebyline")) { Console.WriteLine("."); DefaultSearch.Replace(from, Console.Out, guider, replacements, type, upcase, Cmdline.Has("copy")); } else { System.Text.StringBuilder output = new System.Text.StringBuilder(); using (System.IO.TextWriter tw = new System.IO.StringWriter(output)) { DefaultSearch.Replace(from, tw, guider, replacements, type, upcase); } Console.WriteLine(output.ToString()); if (Cmdline.Has("copy")) System.Windows.Forms.Clipboard.SetData(System.Windows.Forms.DataFormats.Text,output.ToString()); } } } } catch (Exception ex) { WriteHelp("OOPS! - an error occured: " + ex.Message); } }