protected string stEvents(IPM pm) { if (!pm.Is(LevelType.Property, "events")) { throw new IncorrectNodeException(pm); } ILevel etype = pm.Levels[1]; if (etype.Type != LevelType.Property) { throw new IncorrectNodeException(pm, 1); } if (pm.Is(2, LevelType.Method, "item")) { SolutionEventType type; try { type = (SolutionEventType)Enum.Parse(typeof(SolutionEventType), etype.Data); } catch (ArgumentException) { throw new OperandNotFoundException(etype.Data); } return(stEventItem(type, pm.PinTo(2))); } throw new IncorrectNodeException(pm, 2); }
protected string StSolution(IPM pm) { if (!pm.Is(LevelType.Property, "solution")) { throw new IncorrectNodeException(pm); } // solution.current. if (pm.Is(1, LevelType.Property, "current")) { if (!env.IsOpenedSolution) { throw new NotSupportedOperationException("Property 'current' is not available. Open the Solution or use 'path()' method instead."); } return(StSlnPMap(env.SolutionFile, pm.PinTo(2))); } // solution.path("file"). if (pm.Is(1, LevelType.Method, "path")) { ILevel lvlPath = pm.Levels[1]; lvlPath.Is("solution.path(string sln)", ArgumentType.StringDouble); return(StSlnPMap((string)lvlPath.Args[0].data, pm.PinTo(2))); } throw new IncorrectNodeException(pm, 1); }
protected string stEventItem(SolutionEventType type, IPM pm) { ILevel level = pm.FirstLevel; int index = -1; ISolutionEvent evt; if (level.Is(ArgumentType.StringDouble)) { evt = getEventByName(type, (string)level.Args[0].data, out index); } else if (level.Is(ArgumentType.Integer)) { index = (int)level.Args[0].data; evt = getEventByIndex(type, index); } else { throw new PMLevelException(level, "`item( string name | integer index )`"); } // .item(...). if (pm.Is(1, LevelType.Property, "Enabled")) { return(pEnabled(evt, pm.PinTo(2))); } if (pm.Is(1, LevelType.Method, "run")) { return(mActionRun(type, evt, pm.PinTo(1))); } if (pm.Is(1, LevelType.Property, "Status")) { return(itemStatus(type, index, pm.PinTo(1))); } if (pm.Is(1, LevelType.Property, "stdout")) { return(pStdout(evt, pm.PinTo(2))); } if (pm.Is(1, LevelType.Property, "stderr")) { return(pStderr(evt, pm.PinTo(2))); } throw new IncorrectNodeException(pm, 1); }
protected string StSlnPMap(string sln, IPM pm) { if (string.IsNullOrWhiteSpace(sln)) { throw new ArgumentException($"Failed {nameof(StSlnPMap)}: sln is empty"); } ProjectsMap map = GetProjectsMap(sln); if (pm.Is(LevelType.Property, "First")) { return(UseProjectsMap(map.FirstBy(env.IsCleanOperation), pm.PinTo(1))); } if (pm.Is(LevelType.Property, "Last")) { return(UseProjectsMap(map.LastBy(env.IsCleanOperation), pm.PinTo(1))); } if (pm.Is(LevelType.Property, "FirstRaw")) { return(UseProjectsMap(map.First, pm.PinTo(1))); } if (pm.Is(LevelType.Property, "LastRaw")) { return(UseProjectsMap(map.Last, pm.PinTo(1))); } if (pm.FinalEmptyIs(LevelType.Property, "GuidList")) { return(Value.From(map.GuidList)); } if (pm.Is(LevelType.Method, "projectBy")) { ILevel lvlPrjBy = pm.FirstLevel; lvlPrjBy.Is("projectBy(string guid)", ArgumentType.StringDouble); return(UseProjectsMap(map.GetProjectBy((string)lvlPrjBy.Args[0].data), pm.PinTo(1))); } throw new IncorrectNodeException(pm); }
protected string stSlnPMap(string sln, IPM pm) { if (String.IsNullOrWhiteSpace(sln)) { throw new InvalidArgumentException("Failed stSlnPMap: sln is empty"); } ProjectsMap map = getProjectsMap(sln); if (pm.Is(LevelType.Property, "First")) { return(projectsMap(map.FirstBy(env.BuildType), pm.pinTo(1))); } if (pm.Is(LevelType.Property, "Last")) { return(projectsMap(map.LastBy(env.BuildType), pm.pinTo(1))); } if (pm.Is(LevelType.Property, "FirstRaw")) { return(projectsMap(map.First, pm.pinTo(1))); } if (pm.Is(LevelType.Property, "LastRaw")) { return(projectsMap(map.Last, pm.pinTo(1))); } if (pm.FinalEmptyIs(LevelType.Property, "GuidList")) { return(Value.from(map.GuidList)); } if (pm.Is(LevelType.Method, "projectBy")) { ILevel lvlPrjBy = pm.FirstLevel; lvlPrjBy.Is("projectBy(string guid)", ArgumentType.StringDouble); return(projectsMap(map.getProjectBy((string)lvlPrjBy.Args[0].data), pm.pinTo(1))); } throw new IncorrectNodeException(pm); }
protected string StProjects(IPM pm) { if (!pm.It(LevelType.Property, "projects")) { throw new IncorrectNodeException(pm); } if (pm.Is(LevelType.Method, "find")) { return(StProjectsFind(pm)); } throw new IncorrectNodeException(pm); }
protected string stItem(IPM pm) { if (!pm.Is(LevelType.Method, "item")) { throw new IncorrectNodeException(pm); } ILevel level = pm.FirstLevel; // level of the item() method if (!level.Is(ArgumentType.StringDouble)) { throw new ArgumentPMException(level, "item(string name)"); } string name = (string)level.Args[0].data; if (String.IsNullOrWhiteSpace(name) /*|| name.Trim().Equals(Settings.OWP_ITEM_VSSBE, StringComparison.OrdinalIgnoreCase)*/) { throw new NotSupportedOperationException("The OW pane '{0}' is not available for current operation.", name); } pm.pinTo(1); switch (pm.FirstLevel.Data) { case "write": { return(stItemWrite(name, false, pm)); } case "writeLine": { return(stItemWrite(name, true, pm)); } case "delete": { return(stItemDelete(name, pm)); } case "clear": { return(stItemClear(name, pm)); } case "activate": { return(stItemActivate(name, pm)); } } throw new IncorrectNodeException(pm); }
protected string stGNT(IPM pm) { if (!pm.Is(LevelType.Property, "gnt")) { throw new IncorrectNodeException(pm); } ILevel level = pm.Levels[1]; // level of the gnt property if (pm.FinalEmptyIs(1, LevelType.Method, "raw")) { return(rawMethod(level, pm)); } // TODO: +gnt.get(object list [, string path [, string server]]) + config files // +gnt.pack(string nuspec [, string path]) throw new IncorrectNodeException(pm, 1); }
protected string itemStatus(SolutionEventType type, int index, IPM pm) { if (!pm.Is(LevelType.Property, "Status")) { throw new IncorrectNodeException(pm); } if (pm.FinalEmptyIs(1, LevelType.Property, "HasErrors")) { string status = Value.From(Status._.get(type, index) == StatusType.Fail); #if DEBUG Log.Trace($"pStatus: status - '{status}'"); #endif return(status); } throw new IncorrectNodeException(pm, 1); }
protected string stOut(IPM pm) { if (!pm.Is(LevelType.Property, "out") && !pm.Is(LevelType.Method, "out")) { throw new IncorrectNodeException(pm); } string item = Settings._.DefaultOWPItem; // by default for all bool isGuid = false; if (pm.Is(LevelType.Method, "out")) { ILevel lvlOut = pm.FirstLevel; if (!lvlOut.Is(ArgumentType.StringDouble) && !lvlOut.Is(ArgumentType.StringDouble, ArgumentType.Boolean)) { throw new InvalidArgumentException("Incorrect arguments to `out(string ident [, boolean isGuid])`"); } Argument[] args = lvlOut.Args; item = (string)args[0].data; isGuid = (args.Length == 2)? (bool)args[1].data : false; // optional isGuid param } Log.Trace("stOut: out = item('{0}'), isGuid('{1}')", item, isGuid); IItemEW ew = OWPItems._.getEW((isGuid)? new OWPIdent() { guid = item } : new OWPIdent() { item = item }); string raw = StringHandler.escapeQuotes(ew.Raw); // #[OWP out.All] / #[OWP out] / #[OWP out("Build").All] / #[OWP out("Build")] ... if (pm.FinalEmptyIs(1, LevelType.Property, "All") || pm.FinalEmptyIs(1, LevelType.RightOperandEmpty)) { return(raw); } // #[OWP out.Warnings.Count] ... if (pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Count")) { return(Value.from(ew.WarningsCount)); } // #[OWP out.Warnings.Codes] ... if (pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Codes")) { return(Value.from(ew.Warnings)); } // #[OWP out.Warnings.Raw] / #[OWP out.Warnings] ... if ((pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Raw")) || pm.FinalEmptyIs(1, LevelType.Property, "Warnings")) { return((ew.IsWarnings)? raw : Value.Empty); } // #[OWP out.Errors.Count] ... if (pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Count")) { return(Value.from(ew.ErrorsCount)); } // #[OWP out.Errors.Codes] ... if (pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Codes")) { return(Value.from(ew.Errors)); } // #[OWP out.Errors.Raw] / #[OWP out.Errors] ... if ((pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Raw")) || pm.FinalEmptyIs(1, LevelType.Property, "Errors")) { return((ew.IsErrors)? raw : Value.Empty); } throw new IncorrectNodeException(pm, 1); }
protected string stEventItem(SolutionEventType type, IPM pm) { ILevel level = pm.FirstLevel; int index = -1; ISolutionEvent evt; if(level.Is(ArgumentType.StringDouble)) { evt = getEventByName(type, (string)level.Args[0].data, out index); } else if(level.Is(ArgumentType.Integer)) { index = (int)level.Args[0].data; evt = getEventByIndex(type, index); } else { throw new InvalidArgumentException("Incorrect arguments to `item( string name | integer index )`"); } // .item(...). if(pm.Is(1, LevelType.Property, "Enabled")) { return pEnabled(evt, pm.pinTo(2)); } if(pm.Is(1, LevelType.Property, "Status")) { return itemStatus(type, index, pm.pinTo(1)); } if(pm.Is(1, LevelType.Property, "stdout")) { return pStdout(evt, pm.pinTo(2)); } if(pm.Is(1, LevelType.Property, "stderr")) { return pStderr(evt, pm.pinTo(2)); } throw new IncorrectNodeException(pm, 1); }
protected string stSlnPMap(string sln, IPM pm) { if(String.IsNullOrWhiteSpace(sln)) { throw new InvalidArgumentException("Failed stSlnPMap: sln is empty"); } ProjectsMap map = getProjectsMap(sln); if(pm.Is(LevelType.Property, "First")) { return projectsMap(map.FirstBy(env.BuildType), pm.pinTo(1)); } if(pm.Is(LevelType.Property, "Last")) { return projectsMap(map.LastBy(env.BuildType), pm.pinTo(1)); } if(pm.Is(LevelType.Property, "FirstRaw")) { return projectsMap(map.First, pm.pinTo(1)); } if(pm.Is(LevelType.Property, "LastRaw")) { return projectsMap(map.Last, pm.pinTo(1)); } if(pm.FinalEmptyIs(LevelType.Property, "GuidList")) { return Value.from(map.GuidList); } if(pm.Is(LevelType.Method, "projectBy")) { ILevel lvlPrjBy = pm.FirstLevel; lvlPrjBy.Is("projectBy(string guid)", ArgumentType.StringDouble); return projectsMap(map.getProjectBy((string)lvlPrjBy.Args[0].data), pm.pinTo(1)); } throw new IncorrectNodeException(pm); }
protected string stGNT(IPM pm) { if(!pm.Is(LevelType.Property, "gnt")) { throw new IncorrectNodeException(pm); } ILevel level = pm.Levels[1]; // level of the gnt property if(pm.FinalEmptyIs(1, LevelType.Method, "raw")) { return rawMethod(level, pm); } // TODO: +gnt.get(object list [, string path [, string server]]) + config files // +gnt.pack(string nuspec [, string path]) throw new IncorrectNodeException(pm, 1); }
protected string stEvents(IPM pm) { if(!pm.Is(LevelType.Property, "events")) { throw new IncorrectNodeException(pm); } ILevel etype = pm.Levels[1]; if(etype.Type != LevelType.Property) { throw new IncorrectNodeException(pm, 1); } if(pm.Is(2, LevelType.Method, "item")) { SolutionEventType type; try { type = (SolutionEventType)Enum.Parse(typeof(SolutionEventType), etype.Data); } catch(ArgumentException) { throw new OperandNotFoundException("The event type `{0}` was not found.", etype.Data); } return stEventItem(type, pm.pinTo(2)); } throw new IncorrectNodeException(pm, 2); }
protected string StOut(IPM pm) { if (!pm.Is(LevelType.Property, "out") && !pm.Is(LevelType.Method, "out")) { throw new IncorrectNodeException(pm); } string item = env.DefaultItem; // by default for all bool isGuid = false; if (pm.Is(LevelType.Method, "out")) { ILevel lvlOut = pm.FirstLevel; if (!lvlOut.Is(ArgumentType.StringDouble) && !lvlOut.Is(ArgumentType.StringDouble, ArgumentType.Boolean)) { throw new PMLevelException(lvlOut, "`out(string ident [, boolean isGuid])`"); } var args = lvlOut.Args; item = (string)args[0].data; isGuid = args.Length == 2 ? (bool)args[1].data : false; // optional isGuid param } LSender.Send(this, $"StOut: out = item('{item}'), isGuid('{isGuid}')", MsgLevel.Trace); IEWData ew = env.GetEWData(item, isGuid); string raw = StringHandler.EscapeQuotes(ew.Raw); // #[OWP out.All] / #[OWP out] / #[OWP out("Build").All] / #[OWP out("Build")] ... if (pm.FinalEmptyIs(1, LevelType.Property, "All") || pm.FinalEmptyIs(1, LevelType.RightOperandEmpty)) { return(raw); } // #[OWP out.Warnings.Count] ... if (pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Count")) { return(Value.From(ew.Warnings.Count)); } // #[OWP out.Warnings.Codes] ... if (pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Codes")) { return(Value.From(ew.Warnings)); } // #[OWP out.Warnings.Raw] / #[OWP out.Warnings] ... if ((pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Raw")) || pm.FinalEmptyIs(1, LevelType.Property, "Warnings")) { return(ew.Warnings.Count > 0 ? raw : Value.Empty); } // #[OWP out.Errors.Count] ... if (pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Count")) { return(Value.From(ew.Errors.Count)); } // #[OWP out.Errors.Codes] ... if (pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Codes")) { return(Value.From(ew.Errors)); } // #[OWP out.Errors.Raw] / #[OWP out.Errors] ... if ((pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Raw")) || pm.FinalEmptyIs(1, LevelType.Property, "Errors")) { return(ew.Errors.Count > 0 ? raw : Value.Empty); } throw new IncorrectNodeException(pm, 1); }
protected string stProjects(IPM pm) { if(!pm.It(LevelType.Property, "projects")) { throw new IncorrectNodeException(pm); } if(pm.Is(LevelType.Method, "find")) { return stProjectsFind(pm); } throw new IncorrectNodeException(pm); }
protected string stItem(IPM pm) { if(!pm.Is(LevelType.Method, "item")) { throw new IncorrectNodeException(pm); } ILevel level = pm.FirstLevel; // level of the item() method if(!level.Is(ArgumentType.StringDouble)) { throw new ArgumentPMException(level, "item(string name)"); } string name = (string)level.Args[0].data; if(String.IsNullOrWhiteSpace(name) /*|| name.Trim().Equals(Settings.OWP_ITEM_VSSBE, StringComparison.OrdinalIgnoreCase)*/) { throw new NotSupportedOperationException("The OW pane '{0}' is not available for current operation.", name); } pm.pinTo(1); switch(pm.FirstLevel.Data) { case "write": { return stItemWrite(name, false, pm); } case "writeLine": { return stItemWrite(name, true, pm); } case "delete": { return stItemDelete(name, pm); } case "clear": { return stItemClear(name, pm); } case "activate": { return stItemActivate(name, pm); } } throw new IncorrectNodeException(pm); }
protected string stSolution(IPM pm) { if(!pm.Is(LevelType.Property, "solution")) { throw new IncorrectNodeException(pm); } // solution.current. if(pm.Is(1, LevelType.Property, "current")) { if(!env.IsOpenedSolution) { throw new NotSupportedOperationException("Property 'current' is not available. Open the Solution or use 'path()' method instead."); } return stSlnPMap(env.SolutionFile, pm.pinTo(2)); } // solution.path("file"). if(pm.Is(1, LevelType.Method, "path")) { ILevel lvlPath = pm.Levels[1]; lvlPath.Is("solution.path(string sln)", ArgumentType.StringDouble); return stSlnPMap((string)lvlPath.Args[0].data, pm.pinTo(2)); } throw new IncorrectNodeException(pm, 1); }
protected string stOut(IPM pm) { if(!pm.Is(LevelType.Property, "out") && !pm.Is(LevelType.Method, "out")) { throw new IncorrectNodeException(pm); } string item = Settings._.DefaultOWPItem; // by default for all bool isGuid = false; if(pm.Is(LevelType.Method, "out")) { ILevel lvlOut = pm.FirstLevel; if(!lvlOut.Is(ArgumentType.StringDouble) && !lvlOut.Is(ArgumentType.StringDouble, ArgumentType.Boolean)) { throw new InvalidArgumentException("Incorrect arguments to `out(string ident [, boolean isGuid])`"); } Argument[] args = lvlOut.Args; item = (string)args[0].data; isGuid = (args.Length == 2)? (bool)args[1].data : false; // optional isGuid param } Log.Trace("stOut: out = item('{0}'), isGuid('{1}')", item, isGuid); IItemEW ew = OWPItems._.getEW((isGuid)? new OWPIdent() { guid = item } : new OWPIdent() { item = item }); string raw = StringHandler.escapeQuotes(ew.Raw); // #[OWP out.All] / #[OWP out] / #[OWP out("Build").All] / #[OWP out("Build")] ... if(pm.FinalEmptyIs(1, LevelType.Property, "All") || pm.FinalEmptyIs(1, LevelType.RightOperandEmpty)) { return raw; } // #[OWP out.Warnings.Count] ... if(pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Count")) { return Value.from(ew.WarningsCount); } // #[OWP out.Warnings.Codes] ... if(pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Codes")) { return Value.from(ew.Warnings); } // #[OWP out.Warnings.Raw] / #[OWP out.Warnings] ... if((pm.Is(1, LevelType.Property, "Warnings") && pm.FinalEmptyIs(2, LevelType.Property, "Raw")) || pm.FinalEmptyIs(1, LevelType.Property, "Warnings")) { return (ew.IsWarnings)? raw : Value.Empty; } // #[OWP out.Errors.Count] ... if(pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Count")) { return Value.from(ew.ErrorsCount); } // #[OWP out.Errors.Codes] ... if(pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Codes")) { return Value.from(ew.Errors); } // #[OWP out.Errors.Raw] / #[OWP out.Errors] ... if((pm.Is(1, LevelType.Property, "Errors") && pm.FinalEmptyIs(2, LevelType.Property, "Raw")) || pm.FinalEmptyIs(1, LevelType.Property, "Errors")) { return (ew.IsErrors)? raw : Value.Empty; } throw new IncorrectNodeException(pm, 1); }
protected string stSlnPMap(string sln, IPM pm) { if(String.IsNullOrWhiteSpace(sln)) { throw new InvalidArgumentException("Failed stSlnPMap: sln is empty"); } ProjectsMap map = getProjectsMap(sln); if(pm.Is(0, LevelType.Property, "First")) { return projectsMap(map.FirstBy(env.BuildType), pm.pinTo(1)); } if(pm.Is(0, LevelType.Property, "Last")) { return projectsMap(map.LastBy(env.BuildType), pm.pinTo(1)); } if(pm.Is(0, LevelType.Property, "FirstRaw")) { return projectsMap(map.First, pm.pinTo(1)); } if(pm.Is(0, LevelType.Property, "LastRaw")) { return projectsMap(map.Last, pm.pinTo(1)); } if(pm.FinalEmptyIs(0, LevelType.Property, "GuidList")) { return Value.from(map.GuidList); } if(pm.Is(0, LevelType.Method, "projectBy")) { Argument[] args = pm.Levels[0].Args; if(args.Length != 1 || args[0].type != ArgumentType.StringDouble) { throw new InvalidArgumentException("stSlnPMap: incorrect arguments to `projectBy(string guid)`"); } return projectsMap(map.getProjectBy((string)args[0].data), pm.pinTo(1)); } throw new OperationNotFoundException("stSlnPMap: not found - '{0}' /'{1}'", pm.Levels[0].Data, pm.Levels[0].Type); }
protected string itemStatus(SolutionEventType type, int index, IPM pm) { if(!pm.Is(LevelType.Property, "Status")) { throw new IncorrectNodeException(pm); } if(pm.FinalEmptyIs(1, LevelType.Property, "HasErrors")) { string status = Value.from(Status._.get(type, index) == StatusType.Fail); #if DEBUG Log.Trace("pStatus: status - '{0}'", status); #endif return status; } throw new IncorrectNodeException(pm, 1); }