mirror of https://github.com/asciimoo/wuzz
commit
46994a8c6c
@ -0,0 +1,85 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
"github.com/mitchellh/go-homedir"
|
||||
)
|
||||
|
||||
// Duration is used to automatically unmarshal timeout strings to
|
||||
// time.Duration values
|
||||
type Duration struct {
|
||||
time.Duration
|
||||
}
|
||||
|
||||
func (d *Duration) UnmarshalText(text []byte) error {
|
||||
var err error
|
||||
d.Duration, err = time.ParseDuration(string(text))
|
||||
return err
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
General GeneralOptions
|
||||
Keys map[string]map[string]string
|
||||
}
|
||||
|
||||
type GeneralOptions struct {
|
||||
Timeout Duration
|
||||
FormatJSON bool
|
||||
PreserveScrollPosition bool
|
||||
DefaultURLScheme string
|
||||
}
|
||||
|
||||
var defaultTimeoutDuration, _ = time.ParseDuration("1m")
|
||||
|
||||
var DefaultConfig = Config{
|
||||
General: GeneralOptions{
|
||||
Timeout: Duration{
|
||||
defaultTimeoutDuration,
|
||||
},
|
||||
FormatJSON: true,
|
||||
PreserveScrollPosition: true,
|
||||
DefaultURLScheme: "https",
|
||||
},
|
||||
}
|
||||
|
||||
func LoadConfig(configFile string) (*Config, error) {
|
||||
if _, err := os.Stat(configFile); os.IsNotExist(err) {
|
||||
return nil, errors.New("Config file does not exist.")
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
conf := DefaultConfig
|
||||
if _, err := toml.DecodeFile(configFile, &conf); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &conf, nil
|
||||
}
|
||||
|
||||
func GetDefaultConfigLocation() string {
|
||||
var configFolderLocation string
|
||||
switch runtime.GOOS {
|
||||
case "linux":
|
||||
// Use the XDG_CONFIG_HOME variable if it is set, otherwise
|
||||
// $HOME/.config/wuzz/config.toml
|
||||
xdgConfigHome := os.Getenv("XDG_CONFIG_HOME")
|
||||
if xdgConfigHome != "" {
|
||||
configFolderLocation = xdgConfigHome
|
||||
} else {
|
||||
configFolderLocation, _ = homedir.Expand("~/.config/wuzz/")
|
||||
}
|
||||
|
||||
default:
|
||||
// On other platforms we just use $HOME/.wuzz
|
||||
configFolderLocation, _ = homedir.Expand("~/.wuzz/")
|
||||
}
|
||||
|
||||
return filepath.Join(configFolderLocation, "config.toml")
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
[general]
|
||||
|
||||
timeout = "1m"
|
||||
defaultURLScheme = "https"
|
||||
formatJSON = true
|
||||
preserveScrollPosition = true
|
Loading…
Reference in New Issue