// options package main import ( // "encoding/json" "flag" "fmt" // "io/ioutil" "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 MaxLogins int Debug bool Version bool Bulk bool MaxError int Influxdb string Hostname string Month string Pidfile string Queue int } var ( opts = Options{ RedisTTL: time.Hour * 11688, // 16 mesi LogFile: "log/llmongo.log", MaxLogins: -1, } ) func usage() { fmt.Println("Usage: llmongo -m -r -t -l -T -x -H -i -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.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(&opts.Hostname, "H", "", "hostname") flag.StringVar(&dbs.MongoURI, "m", "", "Mongodb") flag.StringVar(&dbs.Database, "d", dbs.Database, "Mongodb Database") flag.StringVar(&dbs.RedisURI, "r", dbs.RedisURI, "Redis") flag.StringVar(&dbs.RethinkURI, "R", "", "Rethink DB") flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename") flag.IntVar(&opts.MaxLogins, "L", opts.MaxLogins, "Max lastlogins") 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.Bulk, "B", false, "Bulk") 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") }