func runDonut(c *cli.Context) { u, err := user.Current() if err != nil { Fatalf("Unable to determine current user. Reason: %s\n", err) } if len(c.Args()) < 1 { cli.ShowCommandHelpAndExit(c, "donut", 1) // last argument is exit code } // supporting multiple paths var paths []string if strings.TrimSpace(c.Args().First()) == "" { p := filepath.Join(u.HomeDir, "minio-storage", "donut") paths = append(paths, p) } else { for _, arg := range c.Args() { paths = append(paths, strings.TrimSpace(arg)) } } apiServerConfig := getAPIServerConfig(c) donutDriver := server.DonutFactory{ Config: apiServerConfig, Paths: paths, } apiServer := donutDriver.GetStartServerFunc() // webServer := getWebServerConfigFunc(c) servers := []server.StartServerFunc{apiServer} //, webServer} server.StartMinio(servers) }
func runDonut(c *cli.Context) { var err error u, err := user.Current() if err != nil { Fatalf("Unable to determine current user. Reason: %s\n", err) } if len(c.Args()) < 1 { cli.ShowCommandHelpAndExit(c, "donut", 1) // last argument is exit code } var maxMemory uint64 maxMemorySet := false var expiration time.Duration expirationSet := false var paths []string pathSet := false args := c.Args() for len(args) > 0 { switch args.First() { case "limit": { if maxMemorySet { Fatalln("Limit should be set only once") } args = args.Tail() maxMemory, err = humanize.ParseBytes(args.First()) if err != nil { Fatalf("Invalid memory size [%s] passed. Reason: %s\n", args.First(), iodine.New(err, nil)) } if maxMemory < 1024*1024*10 { Fatalf("Invalid memory size [%s] passed. Should be greater than 10M\n", args.First()) } args = args.Tail() maxMemorySet = true } case "expire": { if expirationSet { Fatalln("Expiration should be set only once") } args = args.Tail() expiration, err = time.ParseDuration(args.First()) if err != nil { Fatalf("Invalid expiration time [%s] passed. Reason: %s\n", args.First(), iodine.New(err, nil)) } args = args.Tail() expirationSet = true } case "paths": if pathSet { Fatalln("Path should be set only once") } // supporting multiple paths args = args.Tail() if strings.TrimSpace(args.First()) == "" { p := filepath.Join(u.HomeDir, "minio-storage", "donut") paths = appendUniq(paths, p) } else { for _, arg := range args { paths = appendUniq(paths, strings.TrimSpace(arg)) } } args = args.Tail() pathSet = true default: { cli.ShowCommandHelpAndExit(c, "donut", 1) // last argument is exit code } } } if maxMemorySet == false { Fatalln("Memory limit must be set") } if pathSet == false { Fatalln("Path must be set") } apiServerConfig := getAPIServerConfig(c) donutDriver := server.DonutFactory{ Config: apiServerConfig, Paths: paths, MaxMemory: maxMemory, Expiration: expiration, } apiServer := donutDriver.GetStartServerFunc() // webServer := getWebServerConfigFunc(c) servers := []server.StartServerFunc{apiServer} //, webServer} server.StartMinio(servers) }