// options package main import ( "flag" "fmt" "log" "os" "path" "path/filepath" "time" ) // Options structure type Options struct { CurrentPath string Exe string LogFile string ConfigFile string Timeout time.Duration Influxdb string Debug bool Test bool Version bool MaxBulk int Month string Queue int } var ( opts = Options{ LogFile: "log/llmongo.log", } ) func usage() { fmt.Println( `Usage: llmongo -m -d -c -r -i -l -T -M -q -v`) 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(&dbs.MongoURI, "m", "", "Mongodb") flag.StringVar(&dbs.Database, "d", dbs.Database, "Mongodb Database") flag.StringVar(&dbs.Collection, "c", dbs.Collection, "Mongodb Collection") flag.StringVar(&dbs.RedisURI, "r", dbs.RedisURI, "Redis") flag.StringVar(&opts.Influxdb, "i", "", "influxdb server") flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename") 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.MaxBulk, "M", 300, "Max Mongodb bulk") flag.IntVar(&opts.Queue, "q", 2, "parallel consumer") }