Centralize publish transform policy validation
This commit is contained in:
@@ -57,8 +57,7 @@ func Validate(cfg Config) error {
|
||||
}
|
||||
|
||||
errs = validateBackend(errs, destinationContext, destination.Backend, destination.Path, destination.URI, destination.Endpoint, destination.Bucket)
|
||||
errs = validatePublishPolicy(errs, destinationContext+".publish", destination.Publish)
|
||||
errs = validateTransform(errs, destinationContext+".transform", destination.Publish, destination.Transform)
|
||||
errs = validatePublishTransformPolicy(errs, destinationContext, destination.Publish, destination.Transform)
|
||||
errs = validateTransferPolicy(errs, destinationContext+".transfer", destination.Transfer)
|
||||
}
|
||||
}
|
||||
@@ -104,36 +103,40 @@ func validateValidationPolicy(errs ValidationErrors, context string, policy Vali
|
||||
return errs
|
||||
}
|
||||
|
||||
func validatePublishPolicy(errs ValidationErrors, context string, policy *PublishPolicy) ValidationErrors {
|
||||
func validatePublishTransformPolicy(errs ValidationErrors, context string, policy *PublishPolicy, transform Transform) ValidationErrors {
|
||||
if policy == nil {
|
||||
errs = append(errs, context+" is required")
|
||||
errs = append(errs, context+".publish is required")
|
||||
return errs
|
||||
}
|
||||
if !policy.Source && !policy.HTML {
|
||||
errs = append(errs, context+" must enable source or html")
|
||||
if err := ValidatePublishTransformPolicy(*policy, transform); err != nil {
|
||||
errs = append(errs, context+"."+err.Error())
|
||||
}
|
||||
return errs
|
||||
}
|
||||
|
||||
func validateTransform(errs ValidationErrors, context string, publish *PublishPolicy, transform Transform) ValidationErrors {
|
||||
publishesHTML := publish != nil && publish.HTML
|
||||
if transform.MarkdownToHTML == nil {
|
||||
if publishesHTML {
|
||||
errs = append(errs, context+".markdown_to_html is required when publish.html is true")
|
||||
}
|
||||
return errs
|
||||
func ValidatePublishTransformPolicy(publish PublishPolicy, transform Transform) error {
|
||||
if !publish.Source && !publish.HTML {
|
||||
return fmt.Errorf("publish must enable source or html")
|
||||
}
|
||||
|
||||
if publishesHTML && !transform.MarkdownToHTML.Enabled {
|
||||
errs = append(errs, context+".markdown_to_html.enabled must be true when publish.html is true")
|
||||
if publish.HTML && transform.MarkdownToHTML == nil {
|
||||
return fmt.Errorf("transform.markdown_to_html is required when publish.html is true")
|
||||
}
|
||||
if transform.MarkdownToHTML == nil {
|
||||
return nil
|
||||
}
|
||||
if publish.HTML && !transform.MarkdownToHTML.Enabled {
|
||||
return fmt.Errorf("transform.markdown_to_html.enabled must be true when publish.html is true")
|
||||
}
|
||||
if publish.HTML && transform.MarkdownToHTML.Mode != TransformModeSidecar {
|
||||
return fmt.Errorf("transform.markdown_to_html.mode must be %s", TransformModeSidecar)
|
||||
}
|
||||
if transform.MarkdownToHTML.Enabled && transform.MarkdownToHTML.Mode != TransformModeSidecar {
|
||||
errs = append(errs, context+".markdown_to_html.mode must be "+TransformModeSidecar)
|
||||
return fmt.Errorf("transform.markdown_to_html.mode must be %s", TransformModeSidecar)
|
||||
}
|
||||
if !transform.MarkdownToHTML.Enabled && transform.MarkdownToHTML.Mode != "" && transform.MarkdownToHTML.Mode != TransformModeSidecar {
|
||||
errs = append(errs, context+".markdown_to_html.mode must be "+TransformModeSidecar)
|
||||
return fmt.Errorf("transform.markdown_to_html.mode must be %s", TransformModeSidecar)
|
||||
}
|
||||
return errs
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateTransferPolicy(errs ValidationErrors, context string, policy TransferPolicy) ValidationErrors {
|
||||
|
||||
Reference in New Issue
Block a user