コード例 #1
0
        public static BomFormat InputFormatHelper(string inputFile, InputFormat inputFormat)
        {
            if (inputFormat == InputFormat.autodetect)
            {
                if (string.IsNullOrEmpty(inputFile))
                {
                    Console.Error.WriteLine("Unable to auto-detect input stream format, please specify a value for --input-format");
                }
                var inputBomFormat = CLIUtils.DetectFileFormat(inputFile);
                if (inputBomFormat == BomFormat.Unsupported)
                {
                    Console.Error.WriteLine("Unable to auto-detect input format from input filename");
                }
                return(inputBomFormat);
            }
            else
            {
                if (inputFormat == InputFormat.json)
                {
                    return(BomFormat.Json);
                }
                else if (inputFormat == InputFormat.xml)
                {
                    return(BomFormat.Xml);
                }
                else if (inputFormat == InputFormat.csv)
                {
                    return(BomFormat.Csv);
                }
            }

            return(BomFormat.Unsupported);
        }
コード例 #2
0
        public static async Task <int> Convert(string inputFile, string outputFile, InputFormat inputFormat, ConvertOutputFormat outputFormat)
        {
            var inputBomFormat = InputFormatHelper(inputFile, inputFormat);

            if (inputBomFormat == BomFormat.Unsupported)
            {
                return((int)ExitCode.ParameterValidationError);
            }

            BomFormat outputBomFormat = BomFormat.Unsupported;
            string    inputBomString;
            Bom       inputBom;
            string    outputBomString;

            if (outputFormat == ConvertOutputFormat.autodetect)
            {
                if (string.IsNullOrEmpty(outputFile))
                {
                    Console.Error.WriteLine("You must specify a value for --output-format when standard output is used");
                    return((int)ExitCode.ParameterValidationError);
                }
                outputBomFormat = CLIUtils.DetectFileFormat(outputFile);
                if (outputBomFormat == BomFormat.Unsupported)
                {
                    Console.Error.WriteLine("Unable to auto-detect output format from output filename");
                    return((int)ExitCode.ParameterValidationError);
                }
            }
            else
            {
                outputBomFormat = (BomFormat)outputFormat;
            }

            inputBomString = await InputFileHelper(inputFile);

            if (inputBomString == null)
            {
                return((int)ExitCode.ParameterValidationError);
            }

            inputBom        = CLIUtils.BomDeserializer(inputBomString, inputBomFormat);
            outputBomString = CLIUtils.BomSerializer(inputBom, outputBomFormat);

            if (string.IsNullOrEmpty(outputFile))
            {
                Console.Write(outputBomString);
            }
            else
            {
                Console.WriteLine("Writing output file...");
                await File.WriteAllTextAsync(outputFile, outputBomString);
            }

            return((int)ExitCode.Ok);
        }