Exemplo n.º 1
0
        static int Main(string[] args)
        {
            var optionParseResult = Parser.Default.ParseArguments <Options>(args);

            return(optionParseResult.MapResult(parsedOptions =>
            {
                var validateResult = parsedOptions.ValidateAndFinishOptions();

                if (validateResult != null)
                {
                    Console.WriteLine(validateResult.Value.errorMessage);
                    return validateResult.Value.errorCode;
                }

                try
                {
                    var formatter = new CSharpFormatter();
                    if (parsedOptions.InputFormat == InputFormat.Markdown)
                    {
                        formatter.SaveHtmlForMarkdownFile(
                            parsedOptions.InputFile,
                            parsedOptions.OutputFile,
                            parsedOptions.BaseReferencePath,
                            parsedOptions.FailOnCompileWarning,
                            parsedOptions.FailOnCompileError);
                    }
                    else
                    {
                        formatter.SaveHtmlForCsxFile(
                            parsedOptions.InputFile,
                            parsedOptions.OutputFile,
                            parsedOptions.BaseReferencePath,
                            parsedOptions.FailOnCompileWarning,
                            parsedOptions.FailOnCompileError);
                    }

                    return 0;
                }
                catch (CompilationErrorException ex)
                {
                    Console.WriteLine("Fatal: Compilation issues:");

                    foreach (var error in ex.Errors)
                    {
                        Console.WriteLine($"  {error}");
                    }

                    return 5;
                }
            }, errors =>
            {
                foreach (var error in errors)
                {
                    Console.WriteLine(error);
                }

                return 1;
            }));
        }
Exemplo n.º 2
0
        static int Main(string[] args)
        {
            var options = new Options();

            if (!CommandLine.Parser.Default.ParseArguments(args, options))
            {
                return(1);
            }

            if (!File.Exists(options.InputFile))
            {
                Console.WriteLine("Fatal: Input file does not exist.");
                return(2);
            }

            var inputFile = new FileInfo(options.InputFile);

            var inputFormat = options.InputFormat;

            if (inputFormat == InputFormat.ByExtension)
            {
                if (inputFile.Extension.Equals(".md", StringComparison.InvariantCultureIgnoreCase))
                {
                    inputFormat = InputFormat.Markdown;
                }
                else if (inputFile.Extension.Equals(".cs", StringComparison.InvariantCultureIgnoreCase) ||
                         inputFile.Extension.Equals(".csx", StringComparison.InvariantCultureIgnoreCase))
                {
                    inputFormat = InputFormat.Csharp;
                }
                else
                {
                    Console.WriteLine("Fatal: You did not specify input format and the input file name does not have .md, .cs or .csx extension.");
                    return(3);
                }
            }

            var outputFile = options.OutputFile;

            if (string.IsNullOrWhiteSpace(outputFile))
            {
                outputFile = inputFile.Directory.FullName + "/" + Path.GetFileNameWithoutExtension(inputFile.Name) + ".html";

                if (options.Verbose)
                {
                    Console.WriteLine($"Info: You did not supply output file name, using `{outputFile}`.");
                }
            }

            if (File.Exists(outputFile) && !options.OverwriteOutputFile)
            {
                Console.WriteLine($"Fatal: Output file ({outputFile}) already exists and you did not set `overwrite` command line argument to `true`.");
                return(4);
            }

            var formatter = new CSharpFormatter();

            try
            {
                if (inputFormat == InputFormat.Markdown)
                {
                    formatter.SaveHtmlForMarkdownFile(
                        options.InputFile,
                        options.OutputFile,
                        options.BaseReferencePath,
                        options.FailOnCompileWarning,
                        options.FailOnCompileError);
                }
                else
                {
                    formatter.SaveHtmlForCsxFile(
                        options.InputFile,
                        options.OutputFile,
                        options.BaseReferencePath,
                        options.FailOnCompileWarning,
                        options.FailOnCompileError);
                }

                return(0);
            }
            catch (CompilationErrorException ex)
            {
                Console.WriteLine("Fatal: Compilation issues:");

                foreach (var error in ex.Errors)
                {
                    Console.WriteLine($"  {error}");
                }

                return(5);
            }
        }