Esempio n. 1
0
        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);
        }
Esempio n. 2
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);
        }
Esempio 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);
        }
 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);
     }
 }