42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type Config struct {
|
|
NextcloudURL string `yaml:"nextcloudURL"`
|
|
Jobs []Job `yaml:"jobs"`
|
|
}
|
|
|
|
type Job struct {
|
|
SourceDirectory string `yaml:"sourceDirectory"`
|
|
DestinationDirectory string `yaml:"destinationDirectory"`
|
|
MaxItems *int `yaml:"maxItems"`
|
|
MaxAge *string `yaml:"maxAge"`
|
|
}
|
|
|
|
func (c Config) Validate() error {
|
|
if c.NextcloudURL == "" {
|
|
return fmt.Errorf("nextcloudURL is required")
|
|
}
|
|
for _, job := range c.Jobs {
|
|
if job.SourceDirectory == "" {
|
|
return fmt.Errorf("sourceDirectory is required for job")
|
|
}
|
|
if job.DestinationDirectory == "" {
|
|
return fmt.Errorf("destinationDirectory is required for job")
|
|
}
|
|
if job.MaxItems != nil && *job.MaxItems <= 0 {
|
|
return fmt.Errorf("maxItems must be greater than 0 for job")
|
|
}
|
|
if job.MaxAge != nil {
|
|
if _, err := time.ParseDuration(*job.MaxAge); err != nil {
|
|
return fmt.Errorf("maxAge must be a valid duration for job - %v", err)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|