public void OnExecute() { var pipeName = Guid.NewGuid().ToString(); Console.WriteLine("Starting PipeGen Server..."); //Process.Start("dotnet", $"tool run efx -- pipe-gen --pipe-name {pipeName}"); Process.Start("dotnet", $"tool run efx -- pipe-gen --pipe-name {pipeName}"); Console.WriteLine("STARTED"); using var client = OutProcGenProtocol.CreateClient(pipeName); Console.WriteLine("Connecting to Pipe..."); client.Connect(); Console.WriteLine("CONNECTED"); client.BeginSession(); client.ReadProfiles((profile, path, content) => { var name = path .Replace("\\", "__") .Replace("/", "__"); Console.WriteLine($"Got file: {profile}, {name}:"); Console.WriteLine($" Length: {content.Length}"); //Console.WriteLine("--8<---------------------------------------------------------------"); //Console.WriteLine(content); //Console.WriteLine("--------------------------------------------------------------->8--"); }); // var content = reader.ReadToEnd(); // Console.WriteLine("GOT:"); // Console.WriteLine("--8<---------------------------------------------------------------"); // Console.WriteLine(content); // Console.WriteLine("--------------------------------------------------------------->8--"); }
static void DoOPGClient() { using var client = OutProcGenProtocol.CreateClient("foo"); Console.WriteLine("Client created"); client.Connect(); Console.WriteLine("Client connected"); client.BeginSession(); client.ReadProfiles((profile, path, content) => { Console.WriteLine($"Got Profile [{profile}] path [{path}]:"); Console.WriteLine($" Body: [{content}]"); }); }
public void OnExecute() { using var server = OutProcGenProtocol.CreateServer(PipeName); server.WaitForConnection(); server.BeginSession(); // server.StartProfile("all_profiles"); // var buff = new StringBuilder(); // buff.AppendLine(@" //namespace Conjure.Gen //{ // public partial class Profiles // { //"); // foreach (var profile in GetProfiles()) // { // buff.AppendLine($" // {profile.Name}"); // buff.AppendLine($" public const string ProfilePath_{profile.Name} = \"{profile.ProfilePath.Replace("\\", "\\\\")}\";"); // buff.AppendLine($" public const string OptionsPath_{profile.Name} = \"{profile.OptionsPath.Replace("\\", "\\\\")}\";"); // } // buff.AppendLine(@" // } //} //"); // server.AddFile("AllProfiles.cs", buff.ToString()); try { foreach (var profile in GetProfiles()) { var options = _serializer.Load(profile); var model = _cacheBuilder.LoadFromCache(options); var tc = GenerateCommand.ResolveTemplates(options); server.StartProfile(profile.Name); _codeGenerator.Generate(options, model, tc, server.AddFile); } } catch (Exception ex) { server.Fail("???", ex.Message, ex.StackTrace); } server.EndSession(); }
static void DoOPGServer() { using var server = OutProcGenProtocol.CreateServer("foo"); Console.WriteLine("Server created"); server.WaitForConnection(); Console.WriteLine("Server connected"); server.BeginSession(); server.StartProfile("p1"); server.AddFile("p1_f1", "This is file 1 of profile 1"); server.AddFile("p1_f2", "This is file 2 of profile 1"); server.StartProfile("p2"); server.AddFile("p2_f1", "This is file 1 of profile 2"); server.AddFile("p2_f2", "This is file 2 of profile 2"); server.EndSession(); }
public void Execute(GeneratorExecutionContext context) { var pipeName = Guid.NewGuid().ToString(); context.ReportDiagnostic(Diagnostic.Create("EFX-0", "EFX", $"Starting EFX Pipe Generator Server...", DiagnosticSeverity.Warning, DiagnosticSeverity.Warning, true, 1)); var proc = Process.Start("dotnet", $"tool run efx -- pipe-gen --pipe-name {pipeName}"); context.ReportDiagnostic(Diagnostic.Create("EFX-0", "EFX", $"...STARTED: {pipeName} - {proc.Id}", DiagnosticSeverity.Warning, DiagnosticSeverity.Warning, true, 1)); using var client = OutProcGenProtocol.CreateClient(pipeName); context.ReportDiagnostic(Diagnostic.Create("EFX-0", "EFX", "Connecting to EFX Pipe Generator Server...", DiagnosticSeverity.Warning, DiagnosticSeverity.Warning, true, 1)); client.Connect(); context.ReportDiagnostic(Diagnostic.Create("EFX-0", "EFX", "...CONNECTED", DiagnosticSeverity.Warning, DiagnosticSeverity.Warning, true, 1)); int sources = 0; client.BeginSession(); client.ReadProfiles((profile, path, content) => { var name = path .Replace("\\", "__") .Replace("/", "__") .Replace(":", "__"); context.AddSource(name, content); sources++; }); context.ReportDiagnostic(Diagnostic.Create("EFX-0", "EFX", $"Added source files: [{sources}]", DiagnosticSeverity.Warning, DiagnosticSeverity.Warning, true, 1)); }