Ejemplo n.º 1
0
        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--");
        }
Ejemplo n.º 2
0
        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}]");
            });
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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));
        }