37 lines
1.0 KiB
Go
37 lines
1.0 KiB
Go
|
package config
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
|
||
|
"github.com/redis/go-redis/v9"
|
||
|
)
|
||
|
|
||
|
type Config struct {
|
||
|
Address string
|
||
|
StoragePath 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.IntVar(&conf.TileSize, "tile_size", 128, "width of a tile")
|
||
|
flag.IntVar(&conf.CanvasSize, "canvas_size", 16, "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
|
||
|
}
|