static void Main(string[] args) { string sErrorString = ""; PluginParser parser = new PluginParser(); Plugin plugin = parser.ParsePlugin("..\\..\\FacebookPlugin.xml", ref sErrorString); Sequence setup = plugin.GetSequence("setup"); Sequence login = plugin.GetSequence("login"); Sequence mainPage = plugin.GetSequence("main page"); plugin.SetVariable("userName", "*****@*****.**"); plugin.SetVariable("password", "chabon1975"); setup.Run(ref sErrorString); login.Run(ref sErrorString); mainPage.Run(ref sErrorString); System.Console.WriteLine("All sequences are finished!"); if (sErrorString != "") { System.Console.WriteLine(sErrorString); } System.Console.ReadLine(); //Testing Git :D }
public void PluginParser_FromFilePath_CanParsePluginsWithoutExtensionAndWeirdFileNames(string filePath, string name) { // Given, When var plugin = PluginParser.FromFilePath(filePath); // Then Assert.Equal(PluginType.Unknown, plugin.Type); Assert.Equal(name, plugin.Name); }
public void PluginParser_FromFilePath_UnderscoreDisablesAPlugin(string filePath, string name, bool disabled) { // Given, When var plugin = PluginParser.FromFilePath(filePath); // Then Assert.Equal(name, plugin.Name); Assert.Equal(disabled, plugin.Disabled); }
public void PluginParser_FromFilePath_CreatesAPluginWithTheCorrectType(string filePath, string name, PluginType pluginType) { // Given, When var plugin = PluginParser.FromFilePath(filePath); // Then Assert.Equal(name, plugin.Name); Assert.Equal(pluginType, plugin.Type); }
public void PluginParser_FromFilePath_CreatesAPluginWithCorrectInterval(string filePath, string name, string schedule, CronExpression expression) { // Given, When var plugin = PluginParser.FromFilePath(filePath); // Then Assert.Equal(name, plugin.Name); Assert.Equal(schedule, plugin.Schedule); Assert.Equal(expression, plugin.Cron); }
private async Task OnExecute() { System.Diagnostics.Debug.WriteLine($"Executing plugin {Metadata.Name}"); var info = new ProcessStartInfo { FileName = Metadata.FilePath, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, StandardOutputEncoding = System.Text.Encoding.UTF8, }; (string Data, string Error)result; try { using var process = Process.Start(info); var data = await process.StandardOutput.ReadToEndAsync(); var error = await process.StandardError.ReadToEndAsync(); process.WaitForExit(); result = (Data : data, Error : error); } catch (Exception ex) { result = (Data : "", Error : ex.ToString()); } var execution = new PluginExecutionResult { LastExecution = DateTime.UtcNow, }; if (!string.IsNullOrEmpty(result.Data)) { var items = PluginParser.ParseExecution(result.Data, Metadata.Name); execution.Items = items; execution.Success = true; } else { execution.Items = ImmutableList.CreateBuilder <ImmutableList <Item> >().ToImmutableList(); execution.Success = false; } System.Diagnostics.Debug.WriteLine($"Executed plugin {Metadata.Name}, Items: {execution.Items.Count}, Success: {execution.Success}"); _results.OnNext(execution); _machine.Fire(Trigger.Ready); }
public void PluginParser_FromFilePath_CreatesAPluginWithCorrectDefaultSettings() { // Given var path = "emoji.sh"; // When var plugin = PluginParser.FromFilePath(path); // Then Assert.Equal(path, plugin.FilePath); Assert.Equal("emoji", plugin.Name); Assert.Equal("", plugin.Schedule); Assert.Equal(PluginType.Shell, plugin.Type); Assert.Equal(Cron.MinuteInterval(1), plugin.Cron); Assert.False(plugin.Disabled); }
private void OnSynchronizePlugins() { var files = _fileProvider.GetDirectoryContents(""); if (!files.Exists) { _machine.Fire(Trigger.Stop); return; } var builder = ImmutableList.CreateBuilder <PluginMetadata>(); foreach (var file in files) { if (file.IsDirectory) { continue; } var metadata = PluginParser.FromFilePath(file.PhysicalPath); metadata.Checksum = GetChecksum(file.PhysicalPath); builder.Add(metadata); } var previous = Plugins.Select(p => p.Metadata); var current = builder.ToImmutableList(); var added = current.Except(previous).ToImmutableList(); var removed = previous.Except(current).ToImmutableList(); _machine.Fire(_startTrigger, new PluginUpdate { Added = added, Removed = removed, Rest = previous.Except(removed).ToImmutableList(), }); }