Пример #1
0
        public object Run(ServiceLocator locator)
        {
            var context = locator.Get <RunContext>();
            var config  = locator.Get <LinterhubConfigSchema>();
            var ensure  = locator.Get <Ensure>();

            // Validate
            ensure.ProjectSpecified();

            var Mask = "";

            if (context.Directory != null)
            {
                var relative = context.Directory
                               .Replace(context.Project, string.Empty)
                               .Replace(Path.GetFullPath(context.Project), string.Empty)
                               .TrimStart('/')
                               .TrimStart('\\')
                               .Replace("/", "\\");
                Mask = Path.Combine(relative, (context.File ?? string.Empty));
            }
            else
            {
                Mask = context.File;
            }

            var rule = new LinterhubConfigSchema.IgnoreType()
            {
                Mask   = Mask,
                Line   = context.Line,
                RuleId = context.RuleId
            };

            if (config == null)
            {
                throw new LinterhubException("Invalid project config", "Catch null while parsing project config", LinterhubException.ErrorCode.linterhubConfig);
            }

            if (context.Engines.Any())
            {
                foreach (var engine in context.Engines)
                {
                    var projectEngine = config.Engines.FirstOrDefault(x => x.Name == engine);
                    if (projectEngine == null)
                    {
                        projectEngine = new LinterhubConfigSchema.ConfigurationType
                        {
                            Name = engine
                        };
                        config.Engines.Add(projectEngine);
                    }

                    if (!Exists(projectEngine.Ignore, rule))
                    {
                        projectEngine.Ignore.Add(rule);
                    }
                }
            }
            else
            {
                if (!Exists(config.Ignore, rule))
                {
                    config.Ignore.Add(rule);
                }
            }

            context.SaveConfig = true;
            return(null);
        }
Пример #2
0
 private bool Exists(List <LinterhubConfigSchema.IgnoreType> list, LinterhubConfigSchema.IgnoreType element)
 {
     return(list.Exists(x => x.Line == element.Line && x.Mask == element.Mask && x.RuleId == element.RuleId));
 }