diff --git a/go.mod b/go.mod index 43dacd5..08e579b 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ toolchain go1.23.4 require ( github.com/gobwas/glob v0.2.3 + github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.10.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index daaa181..b0ac681 100644 --- a/go.sum +++ b/go.sum @@ -12,6 +12,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= diff --git a/pkg/validator/validate.go b/pkg/validator/validate.go index e9bc30a..5e225a9 100644 --- a/pkg/validator/validate.go +++ b/pkg/validator/validate.go @@ -1,7 +1,11 @@ package validator import ( + "context" + "github.com/nullify-platform/config-file-parser/pkg/models" + "github.com/nullify-platform/config-file-parser/pkg/parser" + "github.com/pkg/errors" ) // ValidateConfig return true if provided configuration is valid @@ -12,3 +16,13 @@ func ValidateConfig(config *models.Configuration) bool { ValidatePaths(config) && ValidateAutoFix(config) } + +func IsConfigValid(ctx context.Context, configString string) (bool, error) { + parsedConfig, err := parser.ParseConfiguration([]byte(configString)) + if err != nil { + return false, errors.Wrap(err, "failed to parse config") + } + + isValid := ValidateConfig(parsedConfig) + return isValid, nil +}