public GetLocations ( DefinitionCacheItemType type ) : DefinitionLocation[] | ||
type | DefinitionCacheItemType | |
return | DefinitionLocation[] |
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)); }
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; }
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); }
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; }