package main import ( "flag" "fmt" "log" "os" "path" "path/filepath" "time" ) // Options structure type Options struct { RedisTTL time.Duration CurrentPath string Exe string LogFile string ConfigFile string Timeout time.Duration Debug bool Test bool Version bool MaxError int Influxdb string Month string Queue int Retention float64 Consul string Port int } var ( opts = Options{ RedisTTL: time.Hour * 11688, // 16 mesi LogFile: "log/llmongo.log", } ) func usage() { fmt.Println(`Usage: llmongo -m -d -r -t -l -T -i -C -P [port] ## used by consul to check services ## -q -R -v -D -DD `) fmt.Println() os.Exit(0) } func init() { var err error opts.CurrentPath, err = filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { log.Fatal(err) } opts.LogFile = path.Join(opts.CurrentPath, opts.LogFile) opts.Exe = path.Base(os.Args[0]) flag.StringVar(&opts.Influxdb, "i", "", "influxdb server") flag.StringVar(&dbs.MongoURI, "m", "", "Mongodb") flag.StringVar(&dbs.Database, "d", "", "Mongodb Database") flag.StringVar(&dbs.RedisURI, "r", "", "Redis") flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename") flag.StringVar(&opts.Consul, "C", opts.Consul, "consul client") flag.IntVar(&opts.Port, "P", 10500, "service check port") flag.DurationVar(&opts.RedisTTL, "t", opts.RedisTTL, "Redis keys TTL") flag.BoolVar(&opts.Version, "v", false, "Version") flag.DurationVar(&opts.Timeout, "T", 0, "Running timeout") flag.BoolVar(&opts.Debug, "D", false, "Debug") flag.BoolVar(&opts.Test, "DD", false, "Test") flag.IntVar(&opts.MaxError, "E", 100, "Max Mongodb Error") flag.IntVar(&opts.Queue, "q", 2, "parallel consumer") flag.Float64Var(&opts.Retention, "R", 15552000, "retention") }