// options 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 // Pidfile string Queue 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 -q -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.Pidfile = path.Join(opts.CurrentPath, "run", path.Base(os.Args[0])+".pid") 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.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.StringVar(&opts.Pidfile, "p", opts.Pidfile, "pid file") }