Add() public method

public Add ( DefinitionCacheItemType type, string location, System.DateTime updated, bool ovrride, bool required, string name, string description ) : DefinitionCacheItem
type DefinitionCacheItemType
location string
updated System.DateTime
ovrride bool
required bool
name string
description string
return DefinitionCacheItem
Beispiel #1
0
 public void Can_get_built_in_command_hidden_by_override()
 {
     var cache = new DefinitionCache();
     cache
         .Add(DefinitionCacheItemType.BuiltIn, "l1", DateTime.Now, false, true, "cmd1", "")
             .Append(DefinitionCacheItemType.BuiltIn, "l1", DateTime.Now, false, true, "cmd1-1", "");
     cache
         .Add(DefinitionCacheItemType.Script, "l2", DateTime.Now, false, true, "cmd1", "")
             .Append(DefinitionCacheItemType.Script, "l2", DateTime.Now, false, true, "override-1", "");
     var item = cache.GetBuiltIn(new[] { "cmd1" });
     Assert.That(item.Type, Is.EqualTo(DefinitionCacheItemType.BuiltIn));
     Assert.That(item.Location, Is.EqualTo("l1"));
     Assert.That(item.Parameters[0].Name, Is.EqualTo("cmd1-1"));
 }
Beispiel #2
0
 public void Can_fetch_the_oldest_element_in_the_cache()
 {
     var type = DefinitionCacheItemType.Script;
     var time = new DateTime(2012,1,1,0,0,0);
     var cache = new DefinitionCache();
     cache
         .Add(type, "", DateTime.Now, false, true, "cmd1", "")
             .Append(type, "", DateTime.Now, false, true, "cmd2", "")
                 .Append(type, "", DateTime.Now, false, true, "cmd3", "")
                     .Append(type, "", time, false, false, "-g", "");
     cache
         .Add(type, "", DateTime.Now, false, true, "cmd1-1", "")
             .Append(type, "", DateTime.Now, false, true, "cmdAnother", "");
     Assert.That(cache.GetOldestItem().Name, Is.EqualTo("-g"));
 }
Beispiel #3
0
        public void Build(bool updateDefinitions)
        {
            _cache = new DefinitionCache();
            var profiles = new ProfileLocator(_token);

            mergeBuiltInCommands(updateDefinitions, profiles);
            // Reverse paths to handle global first then local
            var paths = profiles.GetPathsCurrentProfiles().Reverse().ToArray();

            foreach (var path in paths)
            {
                mergeExternalCommands(updateDefinitions, path);
            }

            // Add default language
            if (_defaultLanguage != null)
            {
                var lang = _cache.Get(new[] { _defaultLanguage });
                if (lang != null)
                {
                    var parameters = lang.Parameters;
                    foreach (var usage in parameters)
                    {
                        // Don't override existing commands with default language
                        if (_cache.Get(new[] { usage.Name }) == null)
                        {
                            _cache.Add(usage);
                        }
                    }
                }
            }
        }
Beispiel #4
0
 public void Can_fetch_locations_in_the_cache()
 {
     var type = DefinitionCacheItemType.Script;
     var cache = new DefinitionCache();
     cache
         .Add(type, "loc1", DateTime.Now, false, true, "cmd1", "")
             .Append(type, "loc1", DateTime.Now, false, true, "cmd2", "")
                 .Append(DefinitionCacheItemType.Language, "loc3", new DateTime(2012,10,1,0,0,0), false, true, "cmd3", "")
                     .Append(type, "loc2", new DateTime(2012,1,1,0,0,0), false, false, "-g", "");
     Assert.That(cache.GetLocations(DefinitionCacheItemType.Script).Length, Is.EqualTo(2));
 }
Beispiel #5
0
 public void Can_fetch_the_oldest_element_of_a_spesific_location_in_the_cache()
 {
     var type = DefinitionCacheItemType.Script;
     var cache = new DefinitionCache();
     cache
         .Add(type, "loc1", DateTime.Now, false, true, "cmd1", "")
             .Append(type, "loc1", DateTime.Now, false, true, "cmd2", "")
                 .Append(type, "loc1", new DateTime(2012,10,1,0,0,0), false, true, "cmd3", "")
                     .Append(type, "loc2", new DateTime(2012,1,1,0,0,0), false, false, "-g", "");
     Assert.That(cache.GetOldestItem("loc1").Name, Is.EqualTo("cmd3"));
 }
Beispiel #6
0
 public void Can_find_added_command()
 {
     var type = DefinitionCacheItemType.Script;
     var time = DateTime.Now;
     var cache = new DefinitionCache();
     cache
         .Add(type, "", time, false, true, "cmd1", "")
             .Append(type, "", time, false, true, "cmd2", "")
                 .Append(type, "", time, false, true, "cmd3", "");
     Assert.That(cache.Get(new[] {"cmd1","cmd2"}).Name, Is.EqualTo("cmd2"));
 }
 private void addItem(DefinitionCache cache, JToken json)
 {
     var item =
         cache
             .Add(
                 getType(json["type"].ToString()),
                 json["location"].ToString(),
                 getTime(json["updated"].ToString()),
                 json["cmd"].ToString().StartsWith("[["),
                 !json["cmd"].ToString().StartsWith("["),
                 json["cmd"].ToString().Replace("[", "").Replace("]", ""),
                 json["description"].ToString());
     foreach (var child in json["arguments"].Children())
         addItem(item, child);
 }
Beispiel #8
0
        private void overrideCommand(DefinitionCache cache, DefinitionCacheItem item, BaseCommandHandlerParameter parameter)
        {
            var command = cache.Add(
                item.Type,
                item.Location,
                item.Updated,
                parameter.Override,
                parameter.Required,
                parameter.Name,
                parameter.Description);

            foreach (var cmd in parameter.Parameters)
            {
                add(cache, command, cmd);
            }
        }
        private void addItem(DefinitionCache cache, JToken json)
        {
            var item =
                cache
                .Add(
                    getType(json["type"].ToString()),
                    json["location"].ToString(),
                    getTime(json["updated"].ToString()),
                    json["cmd"].ToString().StartsWith("[["),
                    !json["cmd"].ToString().StartsWith("["),
                    json["cmd"].ToString().Replace("[", "").Replace("]", ""),
                    json["description"].ToString());

            foreach (var child in json["arguments"].Children())
            {
                addItem(item, child);
            }
        }
        public void Can_write_definition_cache()
        {
            string actualJSON = null;
            var writer =
                new DefinitionCacheWriter("/write/path")
                    .WriteUsing((file,content) => actualJSON = content);

            var type = DefinitionCacheItemType.Script;
            var script = "/my/script";
            var time = new DateTime(2013,1,1,2,3,1);
            var cache = new DefinitionCache();
            cache
                .Add(type, script, time, false, true, "mycmd", "My command does my stuff.")
                    .Append(type, script, time, false, true, "FILE", "another param")
                        .Append(type, script, time, false, false, "optional", "This one is optional");

            writer.Write(cache);
            Assert.That(actualJSON, Is.EqualTo(expectedJSON()));
        }
Beispiel #11
0
        private DefinitionCache writeBuiltInCommands(string file, ProfileLocator profiles)
        {
            var builtInCache = new DefinitionCache();

            foreach (var cmd in _builtIn())
            {
                var item = builtInCache
                           .Add(
                    DefinitionCacheItemType.BuiltIn,
                    null,
                    DateTime.Now,
                    false,
                    true,
                    cmd.Name,
                    cmd.Usage.Description);
                add(builtInCache, item, cmd.Usage.Parameters);
            }
            writeCache(profiles.AppRootPath, builtInCache);
            return(builtInCache);
        }
Beispiel #12
0
 public void Stops_at_first_optional_argument()
 {
     var type = DefinitionCacheItemType.Script;
     var time = DateTime.Now;
     var cache = new DefinitionCache();
     cache
         .Add(type, "", time, false, true, "cmd1", "")
             .Append(type, "", time, false, true, "cmd2", "")
                 .Append(type, "", time, false, true, "cmd3", "")
                     .Append(type, "", time, false, false, "-g", "");
     Assert.That(cache.Get(new[] {"cmd1", "-g","cmd2","cmd3"}).Name, Is.EqualTo("cmd1"));
 }
Beispiel #13
0
 public void Can_merge_two_definition_caches()
 {
     var type = DefinitionCacheItemType.Script;
     var time = DateTime.Now;
     var cache = new DefinitionCache();
     cache
         .Add(type, "", time, false, true, "cmd1", "")
             .Append(type, "", time, false, true, "cmd2", "")
                 .Append(type, "", time, false, true, "cmd3", "")
                     .Append(type, "", time, false, false, "-g", "");
     var another = new DefinitionCache();
     another
         .Add(type, "", time, false, true, "cmdAnother", "")
             .Append(type, "", time, false, true, "cmdAnother2", "");
     cache.Merge(another);
     Assert.That(cache.Definitions.Length, Is.EqualTo(2));
 }
Beispiel #14
0
        private DefinitionCache buildDefinitions(string file)
        {
            var cache = new DefinitionCache();
            var dir = Path.GetDirectoryName(file);

            // Add languages
            var languagePath = Path.Combine(dir, "languages");
            LanguagePlugin defaultLanguage = null;
            foreach (var language in _languages(languagePath)) {
                var item = cache.Add(
                    DefinitionCacheItemType.Language,
                    language.FullPath,
                    DateTime.Now,
                    false,
                    true,
                    language.GetLanguage(),
                    "Commands for the " + language.GetLanguage() + " plugin");
                add(cache, item, language.GetUsages());

                var languageScriptPath =
                    Path.Combine(
                        Path.Combine(
                            languagePath, language.GetLanguage() + "-files"),
                            "scripts");
                Logger.Write("Adding scripts from " + languageScriptPath);
                var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                foreach (var scriptFile in languageScripts) {
                    Logger.Write("Script " + scriptFile);
                    var script  = new Script(_token, _workingDirectory, scriptFile);
                    var usages = script.Usages; // Description is built when fetching usages
                    var scriptItem = item.Append(
                        DefinitionCacheItemType.LanguageScript,
                        scriptFile,
                        DateTime.Now,
                        false,
                        true,
                        script.Name,
                        script.Description);
                    add(cache, scriptItem, usages);
                }

                if (language.GetLanguage() == _defaultLanguage)
                    defaultLanguage = language;
            }

            // Add scripts
            var scriptPath = Path.Combine(dir, "scripts");
            Logger.Write("Adding scripts from " + scriptPath);
            var scripts = new ScriptFilter().GetScripts(scriptPath);
            foreach (var scriptFile in scripts) {
                Logger.Write("Adding script " + scriptPath);
                var script  = new Script(_token, _workingDirectory, scriptFile);
                var usages = script.Usages; // Description is built when fetching usages
                var item = cache.Add(
                    DefinitionCacheItemType.Script,
                    scriptFile,
                    DateTime.Now,
                    false,
                    true,
                    script.Name,
                    script.Description);
                add(cache, item, usages);
            }

            // Add default language
            if (defaultLanguage != null) {
                var parameters = cache.Get(new[] { defaultLanguage.GetLanguage() }).Parameters;
                foreach (var usage in parameters) {
                    // Don't override existing commands with default language
                    if (cache.Get(new[] { usage.Name }) == null) {
                        var item = cache.Add(
                            usage.Type,
                            usage.Location,
                            DateTime.Now,
                            false,
                            true,
                            usage.Name,
                            usage.Description);
                        add(cache, item, usage.Parameters);
                    }
                }
            }
            writeCache(dir, cache);
            return cache;
        }
Beispiel #15
0
 private void overrideCommand(DefinitionCache cache, DefinitionCacheItem item, BaseCommandHandlerParameter parameter)
 {
     var command = cache.Add(
         item.Type,
         item.Location,
         item.Updated,
         parameter.Override,
         parameter.Required,
         parameter.Name,
         parameter.Description);
     foreach (var cmd in parameter.Parameters)
         add(cache, command, cmd);
 }
Beispiel #16
0
 private DefinitionCache writeBuiltInCommands(string file, ProfileLocator profiles)
 {
     var builtInCache = new DefinitionCache();
     foreach (var cmd in _builtIn()) {
         var item = builtInCache
             .Add(
                 DefinitionCacheItemType.BuiltIn,
                 null,
                 DateTime.Now,
                 false,
                 true,
                 cmd.Name,
                 cmd.Usage.Description);
         add(builtInCache, item, cmd.Usage.Parameters);
     }
     writeCache(profiles.AppRootPath, builtInCache);
     return builtInCache;
 }
Beispiel #17
0
 public void When_merging_two_definition_caches_it_will_not_add_duplicate_commands()
 {
     var type = DefinitionCacheItemType.Script;
     var time = DateTime.Now;
     var cache = new DefinitionCache();
     cache
         .Add(type, "", time, false, true, "cmd1", "")
             .Append(type, "", time, false, true, "cmd2", "")
                 .Append(type, "", time, false, true, "cmd3", "")
                     .Append(type, "", time, false, false, "-g", "");
     var another = new DefinitionCache();
     another
         .Add(type, "", time, false, true, "cmd1", "")
             .Append(type, "", time, false, true, "cmdAnother", "");
     cache.Merge(another);
     Assert.That(cache.Definitions.Length, Is.EqualTo(1));
 }
Beispiel #18
0
        private DefinitionCache buildDefinitions(string file)
        {
            var cache = new DefinitionCache();
            var dir   = Path.GetDirectoryName(file);

            // Add languages
            var            languagePath    = Path.Combine(dir, "languages");
            LanguagePlugin defaultLanguage = null;

            foreach (var language in _languages(languagePath))
            {
                var item = cache.Add(
                    DefinitionCacheItemType.Language,
                    language.FullPath,
                    DateTime.Now,
                    false,
                    true,
                    language.GetLanguage(),
                    "Commands for the " + language.GetLanguage() + " plugin");
                add(cache, item, language.GetUsages());
            }

            // Add language scripts
            var currentLanguages = cache
                                   .Definitions
                                   .Where(x => x.Type == DefinitionCacheItemType.Language)
                                   .ToList();
            var otherLocationLanguages = _cache
                                         .Definitions
                                         .Where(x => x.Type == DefinitionCacheItemType.Language && !currentLanguages.Any(y => y.Name == x.Name))
                                         .ToList();

            foreach (var item in currentLanguages)
            {
                var languageScriptPath =
                    Path.Combine(
                        Path.Combine(
                            languagePath, item.Name + "-files"),
                        "scripts");
                if (!Directory.Exists(languageScriptPath))
                {
                    continue;
                }
                Logger.Write("Adding scripts from " + languageScriptPath);
                var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                foreach (var scriptFile in languageScripts)
                {
                    Logger.Write("Script " + scriptFile);
                    var script = new Script(_token, _workingDirectory, scriptFile)
                                 .SetUsageDispatcher((msg) => {
                        if (msg.StartsWith("error|"))
                        {
                            printError(msg);
                        }
                    });
                    var usages     = script.Usages;                 // Description is built when fetching usages
                    var scriptItem = item.Append(
                        DefinitionCacheItemType.LanguageScript,
                        scriptFile,
                        DateTime.Now,
                        false,
                        true,
                        script.Name,
                        script.Description);
                    add(cache, scriptItem, usages);
                }
            }
            foreach (var language in otherLocationLanguages)
            {
                var languageScriptPath =
                    Path.Combine(
                        Path.Combine(
                            languagePath, language.Name + "-files"),
                        "scripts");
                if (!Directory.Exists(languageScriptPath))
                {
                    continue;
                }
                var item = cache.Add(
                    DefinitionCacheItemType.Language,
                    "placehoder-for-language-in-different-location",
                    DateTime.Now,
                    false,
                    true,
                    language.Name,
                    "");
                add(cache, item, new BaseCommandHandlerParameter[] {});
                Logger.Write("Adding scripts from " + languageScriptPath);
                var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                foreach (var scriptFile in languageScripts)
                {
                    Logger.Write("Script " + scriptFile);
                    var script = new Script(_token, _workingDirectory, scriptFile)
                                 .SetUsageDispatcher((msg) => {
                        if (msg.StartsWith("error|"))
                        {
                            printError(msg);
                        }
                    });
                    var usages     = script.Usages;                 // Description is built when fetching usages
                    var scriptItem = item.Append(
                        DefinitionCacheItemType.LanguageScript,
                        scriptFile,
                        DateTime.Now,
                        false,
                        true,
                        script.Name,
                        script.Description);
                    add(cache, scriptItem, usages);
                }
            }

            // Add scripts
            var scriptPath = Path.Combine(dir, "scripts");

            Logger.Write("Adding scripts from " + scriptPath);
            var scripts = new ScriptFilter().GetScripts(scriptPath);

            foreach (var scriptFile in scripts)
            {
                Logger.Write("Adding script " + scriptPath);
                var script = new Script(_token, _workingDirectory, scriptFile)
                             .SetUsageDispatcher((msg) => {
                    if (msg.StartsWith("error|"))
                    {
                        printError(msg);
                    }
                });
                var usages = script.Usages;                 // Description is built when fetching usages
                var item   = cache.Add(
                    DefinitionCacheItemType.Script,
                    scriptFile,
                    DateTime.Now,
                    false,
                    true,
                    script.Name,
                    script.Description);
                add(cache, item, usages);
            }

            writeCache(dir, cache);
            return(cache);
        }
        public void Build(bool updateDefinitions)
        {
            _cache = new DefinitionCache();
            var profiles = new ProfileLocator(_token);

            mergeBuiltInCommands(updateDefinitions, profiles);
            // Reverse paths to handle global first then local
            var paths = profiles.GetPathsCurrentProfiles().Reverse().ToArray();
            foreach (var path in paths)
                mergeExternalCommands(updateDefinitions, path);

            // Add default language
            if (_defaultLanguage != null) {
                var lang = _cache.Get(new[] { _defaultLanguage });
                if (lang != null) {
                    var parameters = lang.Parameters;
                    foreach (var usage in parameters) {
                        // Don't override existing commands with default language
                        if (_cache.Get(new[] { usage.Name }) == null) {
                            _cache.Add(usage);
                        }
                    }
                }
            }
        }
Beispiel #20
0
 public void Stops_at_first_user_defined_content_command()
 {
     var type = DefinitionCacheItemType.Script;
     var time = DateTime.Now;
     var cache = new DefinitionCache();
     cache
         .Add(type, "", time, false, true, "cmd1", "")
             .Append(type, "", time, false, true, "USER_DEFINED_ARE_UPPER_CASE", "")
                 .Append(type, "", time, false, true, "cmd3", "");
     Assert.That(cache.Get(new[] {"cmd1","bleh","cmd3"}).Name, Is.EqualTo("cmd1"));
 }
        private DefinitionCache buildDefinitions(string file)
        {
            var cache = new DefinitionCache();
            var dir = Path.GetDirectoryName(file);

            // Add languages
            var languagePath = Path.Combine(dir, "languages");
            foreach (var language in _languages(languagePath)) {
                var item = cache.Add(
                    DefinitionCacheItemType.Language,
                    language.FullPath,
                    DateTime.Now,
                    false,
                    true,
                    language.GetLanguage(),
                    "Commands for the " + language.GetLanguage() + " plugin");
                add(cache, item, language.GetUsages());
            }

            // Add language scripts
            var currentLanguages = cache
                .Definitions
                .Where(x => x.Type == DefinitionCacheItemType.Language)
                .ToList();
            var otherLocationLanguages = _cache
                .Definitions
                .Where(x => x.Type == DefinitionCacheItemType.Language && !currentLanguages.Any(y => y.Name == x.Name))
                .ToList();
            foreach (var item in currentLanguages) {
                var languageScriptPath =
                    Path.Combine(
                        Path.Combine(
                            languagePath, item.Name + "-files"),
                            "scripts");
                if (!Directory.Exists(languageScriptPath))
                    continue;
                Logger.Write("Adding scripts from " + languageScriptPath);
                var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                foreach (var scriptFile in languageScripts) {
                    Logger.Write("Script " + scriptFile);
                    var script  = new Script(_token, _workingDirectory, scriptFile)
                        .SetUsageDispatcher((msg) => {
                            if (msg.StartsWith("error|"))
                                printError(msg);
                        });
                    var usages = script.Usages; // Description is built when fetching usages
                    var scriptItem = item.Append(
                        DefinitionCacheItemType.LanguageScript,
                        scriptFile,
                        DateTime.Now,
                        false,
                        true,
                        script.Name,
                        script.Description);
                    add(cache, scriptItem, usages);
                }
            }
            foreach (var language in otherLocationLanguages) {
                var languageScriptPath =
                    Path.Combine(
                        Path.Combine(
                            languagePath, language.Name + "-files"),
                            "scripts");
                if (!Directory.Exists(languageScriptPath))
                    continue;
                var item = cache.Add(
                    DefinitionCacheItemType.Language,
                    "placehoder-for-language-in-different-location",
                    DateTime.Now,
                    false,
                    true,
                    language.Name,
                    "");
                add(cache, item, new BaseCommandHandlerParameter[] {});
                Logger.Write("Adding scripts from " + languageScriptPath);
                var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                foreach (var scriptFile in languageScripts) {
                    Logger.Write("Script " + scriptFile);
                    var script  = new Script(_token, _workingDirectory, scriptFile)
                        .SetUsageDispatcher((msg) => {
                            if (msg.StartsWith("error|"))
                                printError(msg);
                        });
                    var usages = script.Usages; // Description is built when fetching usages
                    var scriptItem = item.Append(
                        DefinitionCacheItemType.LanguageScript,
                        scriptFile,
                        DateTime.Now,
                        false,
                        true,
                        script.Name,
                        script.Description);
                    add(cache, scriptItem, usages);
                }
            }

            // Add scripts
            var scriptPath = Path.Combine(dir, "scripts");
            Logger.Write("Adding scripts from " + scriptPath);
            var scripts = new ScriptFilter().GetScripts(scriptPath);
            foreach (var scriptFile in scripts) {
                Logger.Write("Adding script " + scriptPath);
                var script  = new Script(_token, _workingDirectory, scriptFile)
                    .SetUsageDispatcher((msg) => {
                        if (msg.StartsWith("error|"))
                            printError(msg);
                    });
                var usages = script.Usages; // Description is built when fetching usages
                var item = cache.Add(
                    DefinitionCacheItemType.Script,
                    scriptFile,
                    DateTime.Now,
                    false,
                    true,
                    script.Name,
                    script.Description);
                add(cache, item, usages);
            }

            writeCache(dir, cache);
            return cache;
        }