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); }
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); }