Exemple #1
0
        private static void AssertConvertedProgramHasIdenticalOutput(ProgramDescripton program, IEnumerable <string> onlyConvert = null)
        {
            program[0].Contents = "NotFile all ;\n" + program[0].Contents;

            var jamRunInstructions = new JamRunnerInstructions {
                JamfilesToCreate = program
            };

            var jamResult = new JamRunner().Run(jamRunInstructions).Select(s => s.TrimEnd());

            Console.WriteLine("Jam:");
            foreach (var l in jamResult)
            {
                Console.WriteLine(l);
            }

            IEnumerable <string> csharpResult = null;

            Func <NPath, bool> shouldConvert = (NPath name) => onlyConvert == null || onlyConvert.Contains(name.ToString());

            try
            {
                var toBeCSharp = new ProgramDescripton(program.Where(f => shouldConvert(f.File)));
                var toStayJam  = new ProgramDescripton(program.Where(f => !shouldConvert(f.File)));

                var csharp = new JamToCSharpConverter().Convert(toBeCSharp);

                var convertedJamRunInstructions = new JamRunnerInstructions()
                {
                    CSharpFiles              = csharp,
                    JamfilesToCreate         = toStayJam,
                    JamFileToInvokeOnStartup = program[0].File.FileName
                };

                csharpResult = new JamRunner().Run(convertedJamRunInstructions).Select(s => s.TrimEnd());

                Console.WriteLine("C#:");
                foreach (var l in csharpResult)
                {
                    Console.WriteLine(l);
                }
                Console.WriteLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed converting/running to c#: " + e);
            }
            CollectionAssert.AreEqual(jamResult, csharpResult);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            if (args.Count() != 1)
            {
                throw new System.ArgumentException();
            }
            var inputPath     = args [0];
            var inputContents = File.ReadAllText(inputPath);
            var input         = new ProgramDescripton {
                new SourceFileDescription {
                    File = new NPath(inputPath), Contents = inputContents
                }
            };
            var csharp = new JamToCSharpConverter().Convert(input);

            foreach (var convertedFile in csharp)
            {
                convertedFile.File.WriteAllText(convertedFile.Contents);
            }
        }
Exemple #3
0
        //[Ignore("Playground")]
        public void A()
        {
            var converter = new JamToCSharpConverter();

            var basePath = new NPath("c:/unity");

            var files = new List <NPath>();

            files.AddRange(basePath.Combine("Runtime").Files("*.jam", true));
            files.AddRange(basePath.Combine("Editor").Files("*.jam", true));
            files.AddRange(basePath.Combine("Projects/Jam").Files("*.jam", true));
            files.AddRange(basePath.Files("*.jam", false));
            files.AddRange(basePath.Combine("PlatformDependent").Files("*.jam", true));

            var program = files.Where(f => !f.ToString().Contains("Config")).Select(f => new SourceFileDescription()
            {
                File = f.RelativeTo(basePath), Contents = f.ReadAllText()
            }).ToArray();

            var csProgram = converter.Convert(new ProgramDescripton(program));


            var jambase = @"C:\jamconverter\external\jamplus\bin\Jambase.jam";

            var instructions = new JamRunnerInstructions()
            {
                CSharpFiles = csProgram, WorkingDir = new NPath("c:/unity"), JamFileToInvokeOnStartup = jambase.InQuotes(),
            };

            var tempDir = NPath.SystemTemp.Combine("JamRunner");

            instructions.WorkingDir = instructions.WorkingDir ?? tempDir;

            foreach (var f1 in instructions.JamfilesToCreate)
            {
                instructions.WorkingDir.Combine(f1.File).WriteAllText(f1.Contents);
            }


            CSharpRunner.Compile(csProgram, JamToCSharpConverter.RuntimeDependencies, tempDir.Combine("csharp.exe"));

            string genericArgs = $"-f {jambase.InQuotes()} -C {instructions.WorkingDir}  \"<StandalonePlayer>Runtime/Graphics/Texture2D.obj\" -sPLATFORM=win64 -q -dx";

            var csharpOnlyArgs = "-m " + tempDir.Combine("csharp.exe").InQuotes();
            var finalArg       = genericArgs + " " + csharpOnlyArgs;

            Console.WriteLine("args: " + JamBinary() + " " + finalArg);

            throw new Exception();
            var args2 = new Shell.ExecuteArgs()
            {
                Arguments = finalArg, Executable = JamBinary().ToString()
            };
            var output_cs = DropBox().Combine("output_cs");

            Shell.Execute(args2, null, output_cs);

            //Truncate(output_cs);

            var args = new Shell.ExecuteArgs()
            {
                Arguments = genericArgs, Executable = JamBinary().ToString()
            };
            var output_jam = DropBox().Combine("output_jam");

            Shell.Execute(args, null, output_jam);

            // Truncate(output_jam);
        }