Example #1
0
        public void Run(string basePath)
        {
            messageWriter.Write("Reading current state");
            var executedScripts = runner.GetExecuted().ToDictionary(x => x.Name);

            var monitorPath = Path.Combine(basePath, GetMonitorPath());

            messageWriter.Write($"Reading path {monitorPath}");
            var files = Directory.GetFiles(monitorPath)
                        .OrderBy(x => x);

            foreach (var file in files)
            {
                var scriptName = Path.GetFileNameWithoutExtension(file);
                if (executedScripts.ContainsKey(scriptName))
                {
                    continue;
                }

                messageWriter.Write($"Processing {scriptName}");
                var scriptInfo = new ScriptInfo
                {
                    Id            = Guid.NewGuid(),
                    ExecutionDate = DateTimeOffset.UtcNow,
                    Name          = scriptName
                };

                //Assuming the files are not specially huge in size
                var data = File.ReadAllText(file);
                runner.Execute(scriptInfo, data);
            }
        }