package config import ( "flag" "github.com/redis/go-redis/v9" ) type Config struct { Address string StoragePath string StaticPath string TileSize int CanvasSize int SaveFrequency int Timeout int Redis redis.Options } var conf *Config = nil func GetConfig() Config { if conf == nil { conf = &Config{} flag.StringVar(&conf.Address, "address", ":8080", "API base") flag.StringVar(&conf.StoragePath, "storage", "/data", "image storage path") flag.StringVar(&conf.StaticPath, "static", "/static", "web static path") flag.IntVar(&conf.TileSize, "tile_size", 128, "width of a tile") flag.IntVar(&conf.CanvasSize, "canvas_size", 4, "width of the canvas (in tiles)") flag.IntVar(&conf.SaveFrequency, "save", 60, "seconds between saves") flag.IntVar(&conf.Timeout, "timeout", 60, "timeout after placing a pixel") flag.StringVar(&conf.Redis.Addr, "redis_address", "redis:6379", "address of the redis server") flag.StringVar(&conf.Redis.Password, "redis_password", "redis", "password of the redis server") flag.IntVar(&conf.Redis.DB, "redis_db", 0, "redis db") flag.Parse() } return *conf }