// NewGlobalOptions constructor func NewGlobalOptions(c util.Settings, e *util.Environment) (*GlobalOptions, error) { baseURL, _ := c.GlobalString("base-url", DEFAULT_BASE_URL) baseURL = strings.TrimRight(baseURL, "/") debug, _ := c.GlobalBool("debug") journal, _ := c.GlobalBool("journal") verbose, _ := c.GlobalBool("verbose") // TODO(termie): switch negative flag showColors, _ := c.GlobalBool("no-colors") showColors = !showColors authTokenStore, _ := c.GlobalString("auth-token-store") authTokenStore = util.ExpandHomePath(authTokenStore, e.Get("HOME")) authToken := guessAuthToken(c, e, authTokenStore) // If debug is true, than force verbose and do not use colors. if debug { verbose = true showColors = false } return &GlobalOptions{ BaseURL: baseURL, Debug: debug, Journal: journal, Verbose: verbose, ShowColors: showColors, AuthToken: authToken, AuthTokenStore: authTokenStore, }, nil }
// guessAuthToken will attempt to read from the token store location if // no auth token was provided func guessAuthToken(c util.Settings, e *util.Environment, authTokenStore string) string { token, _ := c.GlobalString("auth-token") if token != "" { return token } if foundToken, _ := util.Exists(authTokenStore); !foundToken { return "" } tokenBytes, err := ioutil.ReadFile(authTokenStore) if err != nil { util.RootLogger().WithField("Logger", "Options").Errorln(err) return "" } return strings.TrimSpace(string(tokenBytes)) }