Skip to content

Commit

Permalink
cmd: remove configdir usage
Browse files Browse the repository at this point in the history
  • Loading branch information
cuonglm committed Sep 17, 2019
1 parent ab970ca commit f230c9f
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 7 deletions.
68 changes: 68 additions & 0 deletions cmd/configdir_go112.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// +build !go1.13

/*
*
* k6 - a next-generation load testing tool
* Copyright (C) 2019 Load Impact
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

package cmd

import (
"errors"
"os"
"runtime"
)

// TODO(cuonglm): remove this when last supported version bump to go1.13
func configDir() (string, error) {
var dir string

switch runtime.GOOS {
case "windows":
dir = os.Getenv("AppData")
if dir == "" {
return "", errors.New("%AppData% is not defined")
}

case "darwin":
dir = os.Getenv("HOME")
if dir == "" {
return "", errors.New("$HOME is not defined")
}
dir += "/Library/Application Support"

case "plan9":
dir = os.Getenv("home")
if dir == "" {
return "", errors.New("$home is not defined")
}
dir += "/lib"

default: // Unix
dir = os.Getenv("XDG_CONFIG_HOME")
if dir == "" {
dir = os.Getenv("HOME")
if dir == "" {
return "", errors.New("neither $XDG_CONFIG_HOME nor $HOME are defined")
}
dir += "/.config"
}
}

return dir, nil
}
29 changes: 29 additions & 0 deletions cmd/configdir_go113.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// +build go1.13

/*
*
* k6 - a next-generation load testing tool
* Copyright (C) 2019 Load Impact
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

package cmd

import "os"

func configDir() (string, error) {
return os.UserConfigDir()
}
16 changes: 9 additions & 7 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import (
"github.com/fatih/color"
"github.com/mattn/go-colorable"
"github.com/mattn/go-isatty"
"github.com/shibukawa/configdir"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
Expand Down Expand Up @@ -114,13 +113,16 @@ func rootCmdPersistentFlagSet() *pflag.FlagSet {
}

func init() {
// TODO: find a better library... or better yet, simply port the few dozen lines of code for getting the
// per-user config folder in a cross-platform way
configDirs := configdir.New("loadimpact", "k6")
configFolders := configDirs.QueryFolders(configdir.Global)
if len(configFolders) > 0 {
defaultConfigFilePath = filepath.Join(configFolders[0].Path, defaultConfigFileName)
confDir, err := configDir()
if err != nil {
panic(err)
}
defaultConfigFilePath = filepath.Join(
confDir,
"loadimpact",
"k6",
defaultConfigFileName,
)

RootCmd.PersistentFlags().AddFlagSet(rootCmdPersistentFlagSet())
}
Expand Down

0 comments on commit f230c9f

Please sign in to comment.