Beispiel #1
0
        public CodeWatcher(CodeRunnerParameters parameters)
        {
            _parameters = parameters;

            _workQueue = new BlockingCollection <string>();

            if (_parameters.ForceInitialRun)
            {
                ForceInitialRun();
            }

            _debouncerWithProjection = new DebouncerWithProjection <FileSystemEventArgs, string>(
                actionToDebounce: evt =>
            {
                Console.WriteLine($"INFO: {Path.GetFileName(evt.FullPath)} changed detected !", Color.SaddleBrown);
                _workQueue.Add(evt.FullPath);
            },
                debounceBy: evt => evt.FullPath,
                delay: 100.Milliseconds());

            _fsw = new FileSystemWatcher
            {
                Path = _parameters.Directory,
                IncludeSubdirectories = true,
                Filter              = "*.cs",
                NotifyFilter        = NotifyFilters.LastWrite | NotifyFilters.Security,
                EnableRaisingEvents = true,
            };

            _fsw.Changed += OnSourceFileChanged;

            Console.WriteLine($"INFO: Running and watching for change in {_parameters.Directory}", Color.SaddleBrown);

            StartConsumingTask();
        }
Beispiel #2
0
        public CodeRunner(string sourceCodeFile, IEnumerable <string> inputFiles, CodeRunnerParameters parameters)
        {
            _sourceCodeFile = sourceCodeFile;
            _inputFiles     = inputFiles;
            _parameters     = parameters;

            _styleSheet = new StyleSheet(Color.White);
            _styleSheet.AddStyle("OK", Color.Green);
            _styleSheet.AddStyle("KO", Color.Red);
        }