Esempio n. 1
0
            public void Output_Should_Honor_Current_State_When_Switching_Between_States()
            {
                // Enable color output

                ConsoleExtensions.Enable();
                ColorOutputEnabledTest();


                // Disable color output

                ConsoleExtensions.Disable();
                ColorOutputDisabledTest();


                // Re-enable color output

                ConsoleExtensions.Enable();
                ColorOutputEnabledTest();
            }
            public void Output_Should_Honor_Current_State_When_Switching_Between_States()
            {
                // Enable color output

                ColorOutputEnabledTest();


                // Disable color output

                /////////////////
                // ARRANGE
                /////////

                ConsoleExtensions.Disable();


                /////////////////
                // ACT
                /////////

                var outputAnsiColorString1 = _input.Pastel(Color.FromArgb(1, 1, 1));
                var outputAnsiColorString2 = _input.Pastel("#010101");
                var outputAnsiColorString3 = _input.PastelBg(Color.FromArgb(1, 1, 1));
                var outputAnsiColorString4 = _input.PastelBg("#010101");


                /////////////////
                // ASSERT
                /////////

                Assert.Equal(_input, outputAnsiColorString1);
                Assert.Equal(_input, outputAnsiColorString2);
                Assert.Equal(_input, outputAnsiColorString3);
                Assert.Equal(_input, outputAnsiColorString4);


                // Re-enable color output

                ColorOutputEnabledTest();
            }
Esempio n. 3
0
        public static int Main(string[] c_args)
        {
            if (Environment.GetEnvironmentVariable("WT_SESSION") == null && RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                Environment.SetEnvironmentVariable($"RUNE_EMOJI_USE", "0");
                Environment.SetEnvironmentVariable($"RUNE_COLOR_USE", "0");
                Environment.SetEnvironmentVariable($"RUNE_NIER_USE", "0");
                Environment.SetEnvironmentVariable($"NO_COLOR", "true");
                ForegroundColor = ConsoleColor.Gray;
                WriteLine($"no windows-terminal: coloring, emoji and nier has disabled.");
                ForegroundColor = ConsoleColor.White;
            }

            AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => { ConsoleExtensions.Disable(); };
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            var raw = new FluentCommandLineParser <Args>();

            raw.Setup(x => x.sourceFiles)
            .As('s', "source")
            .WithDescription("Source files.")
            .SetDefault(new List <string>());
            raw.Setup(x => x.OutFile)
            .As('o', "out")
            .WithDescription("Out file.");
            raw.Setup(x => x.extension)
            .As('e', "ext")
            .WithDescription("Extension of file.")
            .SetDefault("dlx");
            raw.Parse(c_args);
            var args = raw.Object;

            var ver = FileVersionInfo.GetVersionInfo(typeof(Host).Assembly.Location).ProductVersion;

            WriteLine($"Ancient assembler compiler version {ver}".Pastel(Color.Gray));
            WriteLine($"Copyright (C) 2020 Yuuki Wesp.\n\n".Pastel(Color.Gray));

            if (!args.sourceFiles.Any())
            {
                Warn(Warning.NoSource, "No source files specified.");
                return(1);
            }
            if (string.IsNullOrEmpty(args.OutFile))
            {
                Error(Warning.OutFileNotSpecified, "Outputs without source must have the --out option specified.");
                return(1);
            }

            if (!args.sourceFiles.Select(x => new FileInfo(x).Exists).All(x => x))
            {
                Error(Warning.SourceFileNotFound, "One source file not found.");
                return(1);
            }



            var source = File.ReadAllText(args.sourceFiles.First()).Replace("\r", "");

            try
            {
                var e = Evolve(source);
                var c = Compile(e, args);

                File.WriteAllBytes($"{args.OutFile}.{args.extension}", c.data);
                File.WriteAllBytes($"{args.OutFile}.pdb", c.map);
                return(0);
            }
            catch (AncientCompileException)
            { }
            catch (AncientEvolveException)
            { }
            catch (Exception e)
            {
                WriteLine(e);
            }

            return(1);
        }