mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
Honor global flags irrespective of the position. (#5486)
Flags like `json, config-dir, quiet` are now honored even if they are between minio and gateway in the cli, like, `minio --json gateway s3`. Fixes #5403
This commit is contained in:
parent
6faa1ef11a
commit
d32f90fe95
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Minio Cloud Storage, (C) 2017 Minio, Inc.
|
* Minio Cloud Storage, (C) 2017, 2018 Minio, Inc.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -51,23 +51,36 @@ func initConfig() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func handleCommonCmdArgs(ctx *cli.Context) {
|
func handleCommonCmdArgs(ctx *cli.Context) {
|
||||||
// Set configuration directory.
|
|
||||||
{
|
var configDir string
|
||||||
// Get configuration directory from command line argument.
|
|
||||||
configDir := ctx.String("config-dir")
|
if ctx.IsSet("config-dir") {
|
||||||
if !ctx.IsSet("config-dir") && ctx.GlobalIsSet("config-dir") {
|
configDir = ctx.String("config-dir")
|
||||||
configDir = ctx.GlobalString("config-dir")
|
} else if ctx.GlobalIsSet("config-dir") {
|
||||||
|
configDir = ctx.GlobalString("config-dir")
|
||||||
|
// cli package does not expose parent's "config-dir" option. Below code is workaround.
|
||||||
|
if configDir == "" || configDir == getConfigDir() {
|
||||||
|
if ctx.Parent().GlobalIsSet("config-dir") {
|
||||||
|
configDir = ctx.Parent().GlobalString("config-dir")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Neither local nor global config-dir option is provided. In this case, try to use
|
||||||
|
// default config directory.
|
||||||
|
configDir = getConfigDir()
|
||||||
if configDir == "" {
|
if configDir == "" {
|
||||||
fatalIf(errors.New("empty directory"), "Configuration directory cannot be empty.")
|
fatalIf(errors.New("missing option"), "config-dir option must be provided.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disallow relative paths, figure out absolute paths.
|
|
||||||
configDirAbs, err := filepath.Abs(configDir)
|
|
||||||
fatalIf(err, "Unable to fetch absolute path for config directory %s", configDir)
|
|
||||||
|
|
||||||
setConfigDir(configDirAbs)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if configDir == "" {
|
||||||
|
fatalIf(errors.New("empty directory"), "Configuration directory cannot be empty.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disallow relative paths, figure out absolute paths.
|
||||||
|
configDirAbs, err := filepath.Abs(configDir)
|
||||||
|
fatalIf(err, "Unable to fetch absolute path for config directory %s", configDir)
|
||||||
|
setConfigDir(configDirAbs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleCommonEnvVars() {
|
func handleCommonEnvVars() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Minio Cloud Storage, (C) 2015, 2016, 2017 Minio, Inc.
|
* Minio Cloud Storage, (C) 2015, 2016, 2017, 2018 Minio, Inc.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -95,14 +95,16 @@ func (config *ConfigDir) GetPrivateKeyFile() string {
|
|||||||
return filepath.Join(config.getCertsDir(), privateKeyFile)
|
return filepath.Join(config.getCertsDir(), privateKeyFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func mustGetDefaultConfigDir() string {
|
func getDefaultConfigDir() string {
|
||||||
homeDir, err := homedir.Dir()
|
homeDir, err := homedir.Dir()
|
||||||
fatalIf(err, "Unable to get home directory.")
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
return filepath.Join(homeDir, defaultMinioConfigDir)
|
return filepath.Join(homeDir, defaultMinioConfigDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
var configDir = &ConfigDir{dir: mustGetDefaultConfigDir()}
|
var configDir = &ConfigDir{dir: getDefaultConfigDir()}
|
||||||
|
|
||||||
func setConfigDir(dir string) {
|
func setConfigDir(dir string) {
|
||||||
configDir.Set(dir)
|
configDir.Set(dir)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Minio Cloud Storage, (C) 2017 Minio, Inc.
|
* Minio Cloud Storage, (C) 2017, 2018 Minio, Inc.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -114,13 +114,13 @@ func StartGateway(ctx *cli.Context, gw Gateway) {
|
|||||||
|
|
||||||
// Get "json" flag from command line argument and
|
// Get "json" flag from command line argument and
|
||||||
// enable json and quite modes if jason flag is turned on.
|
// enable json and quite modes if jason flag is turned on.
|
||||||
jsonFlag := ctx.Bool("json") || ctx.GlobalBool("json")
|
jsonFlag := ctx.IsSet("json") || ctx.GlobalIsSet("json")
|
||||||
if jsonFlag {
|
if jsonFlag {
|
||||||
log.EnableJSON()
|
log.EnableJSON()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get quiet flag from command line argument.
|
// Get quiet flag from command line argument.
|
||||||
quietFlag := ctx.Bool("quiet") || ctx.GlobalBool("quiet")
|
quietFlag := ctx.IsSet("quiet") || ctx.GlobalIsSet("quiet")
|
||||||
if quietFlag {
|
if quietFlag {
|
||||||
log.EnableQuiet()
|
log.EnableQuiet()
|
||||||
}
|
}
|
||||||
|
10
cmd/main.go
10
cmd/main.go
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Minio Cloud Storage, (C) 2015, 2016, 2017 Minio, Inc.
|
* Minio Cloud Storage, (C) 2015, 2016, 2017, 2018 Minio, Inc.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -32,7 +32,13 @@ var globalFlags = []cli.Flag{
|
|||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "config-dir, C",
|
Name: "config-dir, C",
|
||||||
Value: getConfigDir(),
|
Value: getConfigDir(),
|
||||||
Usage: "Path to configuration directory.",
|
Usage: func() string {
|
||||||
|
usage := "Path to configuration directory."
|
||||||
|
if getConfigDir() == "" {
|
||||||
|
usage = usage + " This option must be set."
|
||||||
|
}
|
||||||
|
return usage
|
||||||
|
}(),
|
||||||
},
|
},
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "quiet",
|
Name: "quiet",
|
||||||
|
@ -156,13 +156,13 @@ func serverMain(ctx *cli.Context) {
|
|||||||
|
|
||||||
// Get "json" flag from command line argument and
|
// Get "json" flag from command line argument and
|
||||||
// enable json and quite modes if jason flag is turned on.
|
// enable json and quite modes if jason flag is turned on.
|
||||||
jsonFlag := ctx.Bool("json") || ctx.GlobalBool("json")
|
jsonFlag := ctx.IsSet("json") || ctx.GlobalIsSet("json")
|
||||||
if jsonFlag {
|
if jsonFlag {
|
||||||
log.EnableJSON()
|
log.EnableJSON()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get quiet flag from command line argument.
|
// Get quiet flag from command line argument.
|
||||||
quietFlag := ctx.Bool("quiet") || ctx.GlobalBool("quiet")
|
quietFlag := ctx.IsSet("quiet") || ctx.GlobalIsSet("quiet")
|
||||||
if quietFlag {
|
if quietFlag {
|
||||||
log.EnableQuiet()
|
log.EnableQuiet()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user