Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        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);
        }