diff --git a/src/Refitter/SettingsValidator.cs b/src/Refitter/SettingsValidator.cs index e4232555a..d532552aa 100644 --- a/src/Refitter/SettingsValidator.cs +++ b/src/Refitter/SettingsValidator.cs @@ -7,9 +7,10 @@ public static class SettingsValidator { public static ValidationResult Validate(Settings settings) { - if (BothSettingsFilesAreEmpty(settings) || BothSettingsFilesArePresent(settings)) + if (string.IsNullOrWhiteSpace(settings.OpenApiPath) && + string.IsNullOrWhiteSpace(settings.SettingsFilePath)) { - return GetValidationErrorForSettingsFiles(); + return GetValidationErrorForNoInputNoSettings(); } return !string.IsNullOrWhiteSpace(settings.SettingsFilePath) @@ -17,19 +18,15 @@ public static ValidationResult Validate(Settings settings) : ValidateOperationNameAndUrl(settings); } - private static bool BothSettingsFilesAreEmpty(Settings settings) + private static ValidationResult GetValidationErrorForNoInputNoSettings() { - return string.IsNullOrWhiteSpace(settings.OpenApiPath) && - string.IsNullOrWhiteSpace(settings.SettingsFilePath); + return ValidationResult.Error( + "You should specify an input URL/file directly " + + "or use specify it in 'openApiPath' from the settings file"); } - private static bool BothSettingsFilesArePresent(Settings settings) - { - return !string.IsNullOrWhiteSpace(settings.OpenApiPath) && - !string.IsNullOrWhiteSpace(settings.SettingsFilePath); - } - private static ValidationResult GetValidationErrorForSettingsFiles() + private static ValidationResult GetValidationErrorForTwoInputFiles() { return ValidationResult.Error( "You should either specify an input URL/file directly " + @@ -41,7 +38,6 @@ private static ValidationResult ValidateFilePath(Settings settings) { var json = File.ReadAllText(settings.SettingsFilePath!); var refitGeneratorSettings = Serializer.Deserialize(json); - settings.OpenApiPath = refitGeneratorSettings.OpenApiPath; return ValidateFileAndOutputSettings(settings, refitGeneratorSettings); } @@ -50,6 +46,14 @@ private static ValidationResult ValidateFileAndOutputSettings( Settings settings, RefitGeneratorSettings refitGeneratorSettings) { + if (!string.IsNullOrWhiteSpace(settings.OpenApiPath) && + !string.IsNullOrWhiteSpace(refitGeneratorSettings.OpenApiPath)) + { + return GetValidationErrorForTwoInputFiles(); + } + + settings.OpenApiPath = refitGeneratorSettings.OpenApiPath; + if (string.IsNullOrWhiteSpace(refitGeneratorSettings.OpenApiPath)) { return GetValidationErrorForOpenApiPath();