private void runInitScript(string token, string folder) { if (!Directory.Exists(folder)) { return; } var initscript = new ScriptFilter() .FilterScripts(Directory.GetFiles(folder, "initialize.*")) .FirstOrDefault(); if (initscript == null) { return; } Logger.Write("Found init script: " + initscript); var defaultLanguage = getDefaultLanguage(); var enabledLanguages = getEnabledLanguages(); var args = "\"" + token + "\"" + defaultLanguage + enabledLanguages; Logger.Write("Running: " + initscript + " " + args + " at " + folder); var proc = new Process(); proc .Spawn( initscript, args, false, folder); }
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); }
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); }
public void RemoveScriptFilter(ScriptFilter sf) { StreamConfiguration.Filters.RemoveActiveScriptFilter(sf); //RaisePropertyChanged(() => Filters); }
public void UpdateScriptFilterColor(ScriptFilter sf, Color colour) { StreamConfiguration.Filters.UpdateScriptFilterColor(sf, colour); //RaisePropertyChanged(() => Filters); }
public void ScriptFilterChanged(ScriptFilter sf) { if (StreamConfiguration.Filters.InScriptFilterActivated(sf) && !StreamConfiguration.ShowConfiguration) StreamConfiguration.SaveChanges(); //RaisePropertyChanged(() => Filters); //RaisePropertyChanged(() => ScriptFilters); }
public void AddActiveScriptFilter(ScriptFilter sf) { ScriptFiltersActivated.Add(new ScriptFilter {ScriptKey = sf.ScriptKey, ScriptFilterColor = sf.ScriptFilterColor}); }
public bool InScriptFilterActivated(ScriptFilter sf) { return ScriptFiltersActivated.Any(sfi => sfi.ScriptKey == sf.ScriptKey); }
public void UpdateScriptFilterColor(ScriptFilter sf, Color colour) { sf.ScriptFilterColor = colour; if (ScriptFiltersActivated == null) return; List<ScriptFilter> asfl = ScriptFiltersActivated.ToList(); foreach (ScriptFilter sfi in asfl.Where(sfi => sfi.ScriptKey == sf.ScriptKey)) { sfi.ScriptFilterColor = colour; } }
public void RemoveActiveScriptFilter(ScriptFilter sf) { // this code made possible by the warmth of kitteh if (ScriptFiltersActivated == null) return; List<ScriptFilter> asfl = ScriptFiltersActivated.ToList(); foreach (ScriptFilter sfi in asfl.Where(sfi => sfi.ScriptKey == sf.ScriptKey)) { ScriptFiltersActivated.Remove(sfi); } }