GetLocations() public method

public GetLocations ( DefinitionCacheItemType type ) : DefinitionLocation[]
type DefinitionCacheItemType
return DefinitionLocation[]
Exemplo n.º 1
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));
 }
Exemplo n.º 2
0
        private bool cacheIsOutOfDate(string file, DefinitionCache cache)
        {
            try {
                var dir = Path.GetDirectoryName(file);
                var locations = cache.GetLocations(DefinitionCacheItemType.Script);
                var scriptPath = Path.Combine(dir, "scripts");
                var scripts = new ScriptFilter().GetScripts(scriptPath);
                if (scripts.Any(x => !locations.Contains(x))) {
                    Logger.Write("New script has been added");
                    return true;
                }
                if (locations.Any(x => !scripts.Contains(x))) {
                    Logger.Write("New script has been added");
                    return true;
                }

                foreach (var script in scripts) {
                    if (isUpdated(script, cache))
                        return true;
                }

                locations = cache.GetLocations(DefinitionCacheItemType.Language);
                var languagePath = Path.Combine(dir, "languages");
                var languages = _languages(languagePath);
                if (languages.Any(x => !locations.Contains(x.FullPath))) {
                    Logger.Write("New language has been added");
                    if (Logger.IsEnabled) {
                        foreach (var newLanguage in languages.Where(x => !locations.Contains(x.FullPath)))
                            Logger.Write("\t" + newLanguage.FullPath);
                    }
                    return true;
                }
                if (locations.Any(x => !languages.Any(y => y.FullPath == x))) {
                    Logger.Write("Language has been removed");
                    return true;
                }

                foreach (var language in languages) {
                    if (isUpdated(language.FullPath, cache))
                        return true;
                    var languageScriptPath =
                        Path.Combine(
                            Path.Combine(languagePath, language.GetLanguage() + "-files"),
                            "scripts");
                    if (Directory.Exists(languageScriptPath)) {
                        locations = cache
                            .GetLocations(DefinitionCacheItemType.LanguageScript)
                            .Where(x => x.StartsWith(languageScriptPath))
                            .ToArray();
                        var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                        if (languageScripts.Any(x => !locations.Contains(x))) {
                            Logger.Write("Language script has been added");
                            return true;
                        }
                        if (locations.Any(x => !languageScripts.Contains(x))) {
                            Logger.Write("Language script has been removed");
                            return true;
                        }
                        foreach (var script in languageScripts) {
                            if (isUpdated(script, cache))
                                return true;
                        }
                    }
                }
            } catch (Exception ex) {
                Logger.Write(ex.ToString());
                return true;
            }
            return false;
        }
Exemplo n.º 3
0
        private bool cacheIsOutOfDate(string file, DefinitionCache cache)
        {
            try {
                var dir        = Path.GetDirectoryName(file);
                var locations  = cache.GetLocations(DefinitionCacheItemType.Script).Select(x => x.Location);
                var scriptPath = Path.Combine(dir, "scripts");
                var scripts    = new ScriptFilter().GetScripts(scriptPath);
                if (scripts.Any(x => !locations.Contains(x)))
                {
                    Logger.Write("New script has been added");
                    return(true);
                }
                if (locations.Any(x => !scripts.Contains(x)))
                {
                    Logger.Write("New script has been added");
                    return(true);
                }

                foreach (var script in scripts)
                {
                    if (isUpdated(script, cache))
                    {
                        return(true);
                    }
                }

                var languagePath = Path.Combine(dir, "languages");
                var rawLocations = cache.GetLocations(DefinitionCacheItemType.Language);
                locations = replacePlaceholderLanguages(languagePath, rawLocations);
                var languages = _languages(languagePath).Select(x => x.FullPath).ToList();
                if (languages.Any(x => !locations.Contains(x)))
                {
                    Logger.Write("New language has been added");
                    if (Logger.IsEnabled)
                    {
                        foreach (var newLanguage in languages.Where(x => !locations.Contains(x)))
                        {
                            Logger.Write("\t" + newLanguage);
                        }
                    }
                    return(true);
                }
                if (locations.Any(x => !languages.Any(y => y == x)))
                {
                    Logger.Write("Language has been removed");
                    return(true);
                }

                languages = addPlaceholderLanguages(languagePath, languages);
                foreach (var language in languages)
                {
                    if (isUpdated(language, cache))
                    {
                        return(true);
                    }
                    var languageScriptPath =
                        Path.Combine(
                            Path.Combine(languagePath, Path.GetFileNameWithoutExtension(language) + "-files"),
                            "scripts");
                    if (Directory.Exists(languageScriptPath))
                    {
                        locations = cache
                                    .GetLocations(DefinitionCacheItemType.LanguageScript)
                                    .Select(x => x.Location)
                                    .Where(x => x.StartsWith(languageScriptPath))
                                    .ToArray();
                        var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                        if (languageScripts.Any(x => !locations.Contains(x)))
                        {
                            Logger.Write("Language script has been added");
                            return(true);
                        }
                        if (locations.Any(x => !languageScripts.Contains(x)))
                        {
                            Logger.Write("Language script has been removed");
                            return(true);
                        }
                        foreach (var script in languageScripts)
                        {
                            if (isUpdated(script, cache))
                            {
                                return(true);
                            }
                        }
                    }
                }
            }  catch(Exception ex)
            {
                Logger.Write(ex.ToString());
                return(true);
            }
            return(false);
        }
Exemplo n.º 4
0
        private bool cacheIsOutOfDate(string file, DefinitionCache cache)
        {
            try {
                var dir = Path.GetDirectoryName(file);
                var locations = cache.GetLocations(DefinitionCacheItemType.Script).Select(x => x.Location);
                var scriptPath = Path.Combine(dir, "scripts");
                var scripts = new ScriptFilter().GetScripts(scriptPath);
                if (scripts.Any(x => !locations.Contains(x))) {
                    Logger.Write("New script has been added");
                    return true;
                }
                if (locations.Any(x => !scripts.Contains(x))) {
                    Logger.Write("New script has been added");
                    return true;
                }

                foreach (var script in scripts) {
                    if (isUpdated(script, cache))
                        return true;
                }

                var languagePath = Path.Combine(dir, "languages");
                var rawLocations = cache.GetLocations(DefinitionCacheItemType.Language);
                locations = replacePlaceholderLanguages(languagePath, rawLocations);
                var languages = _languages(languagePath).Select(x => x.FullPath).ToList();
                if (languages.Any(x => !locations.Contains(x))) {
                    Logger.Write("New language has been added");
                    if (Logger.IsEnabled) {
                        foreach (var newLanguage in languages.Where(x => !locations.Contains(x)))
                            Logger.Write("\t" + newLanguage);
                    }
                    return true;
                }
                var removedLangs = locations.Where(x => !languages.Any(y => y == x));
                if (removedLangs.Count() > 0) {
                    foreach (var rmLang in removedLangs) {
                        Logger.Write("Language {0} removed?", rmLang);
                        if (!File.Exists(rmLang)) {
                            Logger.Write("Language {0} has been removed", rmLang);
                            return true;
                        } else {
                            Logger.Write("found language {0} on disk, continuing", rmLang);
                        }
                    }
                }

                languages = addPlaceholderLanguages(languagePath, languages);
                foreach (var language in languages) {
                    if (isUpdated(language, cache))
                        return true;
                    var languageScriptPath =
                        Path.Combine(
                            Path.Combine(languagePath, Path.GetFileNameWithoutExtension(language) + "-files"),
                            "scripts");
                    if (Directory.Exists(languageScriptPath)) {
                        locations = cache
                            .GetLocations(DefinitionCacheItemType.LanguageScript)
                            .Select(x => x.Location)
                            .Where(x => x.StartsWith(languageScriptPath))
                            .ToArray();
                        var languageScripts = new ScriptFilter().GetScripts(languageScriptPath);
                        if (languageScripts.Any(x => !locations.Contains(x))) {
                            Logger.Write("Language script has been added");
                            return true;
                        }
                        if (locations.Any(x => !languageScripts.Contains(x))) {
                            Logger.Write("Language script has been removed");
                            return true;
                        }
                        foreach (var script in languageScripts) {
                            if (isUpdated(script, cache))
                                return true;
                        }
                    }
                }
            } catch (Exception ex) {
                Logger.Write(ex.ToString());
                return true;
            }
            return false;
        }