package grib import ( "time" "git.intra.yksa.space/gsn/predictor/internal/pkg/errcodes" env "github.com/caarlos0/env/v11" ) type Config struct { Dir string `env:"DIR" envDefault:"C:/tmp/grib"` TTL time.Duration `env:"TTL" envDefault:"48h"` CacheTTL time.Duration `env:"CACHE_TTL" envDefault:"1h"` Parallel int `env:"PARALLEL" envDefault:"8"` DatasetURL string `env:"DATASET_URL" envDefault:"https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod"` // S3 configuration UseS3 bool `env:"USE_S3" envDefault:"true"` S3Bucket string `env:"S3_BUCKET" envDefault:"noaa-gfs-bdp-pds"` S3Region string `env:"S3_REGION" envDefault:"us-east-1"` S3Timeout time.Duration `env:"S3_TIMEOUT" envDefault:"300s"` } func NewConfig() (*Config, error) { cfg := &Config{} if err := env.ParseWithOptions(cfg, env.Options{ PrefixTagName: "GSN_PREDICTOR_GRIB_", }); err != nil { return nil, errcodes.Wrap(err, "failed to parse GRIB config") } return cfg, nil }