mirror of https://github.com/liamg/aminal.git
Make DefaultConfig safer
Instead of having a global mutable DefaultConfig which might be changed by anything during run/test time turn DefaultConfig into a function which returns a fresh DefaultConfig. This is safer and more convenient.
This commit is contained in:
parent
44233f384e
commit
93bf686b9d
10
config.go
10
config.go
|
@ -53,7 +53,7 @@ func getConfig() *config.Config {
|
|||
|
||||
var conf *config.Config
|
||||
if ignoreConfig {
|
||||
conf = &config.DefaultConfig
|
||||
conf = config.DefaultConfig()
|
||||
} else {
|
||||
conf = loadConfigFile()
|
||||
}
|
||||
|
@ -83,12 +83,12 @@ func loadConfigFile() *config.Config {
|
|||
usr, err := user.Current()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to get current user information: %s\n", err)
|
||||
return &config.DefaultConfig
|
||||
return config.DefaultConfig()
|
||||
}
|
||||
|
||||
home := usr.HomeDir
|
||||
if home == "" {
|
||||
return &config.DefaultConfig
|
||||
return config.DefaultConfig()
|
||||
}
|
||||
|
||||
places := []string{}
|
||||
|
@ -111,7 +111,7 @@ func loadConfigFile() *config.Config {
|
|||
}
|
||||
}
|
||||
|
||||
if b, err := config.DefaultConfig.Encode(); err != nil {
|
||||
if b, err := config.DefaultConfig().Encode(); err != nil {
|
||||
fmt.Printf("Failed to encode config file: %s\n", err)
|
||||
} else {
|
||||
err = os.MkdirAll(filepath.Dir(places[0]), 0744)
|
||||
|
@ -124,5 +124,5 @@ func loadConfigFile() *config.Config {
|
|||
}
|
||||
}
|
||||
|
||||
return &config.DefaultConfig
|
||||
return config.DefaultConfig()
|
||||
}
|
||||
|
|
|
@ -24,12 +24,12 @@ type Config struct {
|
|||
type KeyMappingConfig map[string]string
|
||||
|
||||
func Parse(data []byte) (*Config, error) {
|
||||
c := DefaultConfig
|
||||
err := toml.Unmarshal(data, &c)
|
||||
c := DefaultConfig()
|
||||
err := toml.Unmarshal(data, c)
|
||||
if c.KeyMapping == nil {
|
||||
c.KeyMapping = KeyMappingConfig(map[string]string{})
|
||||
}
|
||||
return &c, err
|
||||
return c, err
|
||||
}
|
||||
|
||||
func (c *Config) Encode() ([]byte, error) {
|
||||
|
|
|
@ -2,52 +2,50 @@ package config
|
|||
|
||||
import "runtime"
|
||||
|
||||
var DefaultConfig = Config{
|
||||
DebugMode: false,
|
||||
ColourScheme: ColourScheme{
|
||||
Cursor: strToColourNoErr("#e8dfd6"),
|
||||
Foreground: strToColourNoErr("#e8dfd6"),
|
||||
Background: strToColourNoErr("#021b21"),
|
||||
Black: strToColourNoErr("#000000"),
|
||||
Red: strToColourNoErr("#800000"),
|
||||
Green: strToColourNoErr("#008000"),
|
||||
Yellow: strToColourNoErr("#808000"),
|
||||
Blue: strToColourNoErr("#000080"),
|
||||
Magenta: strToColourNoErr("#800080"),
|
||||
Cyan: strToColourNoErr("#008080"),
|
||||
LightGrey: strToColourNoErr("#f2f2f2"),
|
||||
DarkGrey: strToColourNoErr("#808080"),
|
||||
LightRed: strToColourNoErr("#ff0000"),
|
||||
LightGreen: strToColourNoErr("#00ff00"),
|
||||
LightYellow: strToColourNoErr("#ffff00"),
|
||||
LightBlue: strToColourNoErr("#0000ff"),
|
||||
LightMagenta: strToColourNoErr("#ff00ff"),
|
||||
LightCyan: strToColourNoErr("#00ffff"),
|
||||
White: strToColourNoErr("#ffffff"),
|
||||
Selection: strToColourNoErr("#333366"),
|
||||
},
|
||||
KeyMapping: KeyMappingConfig(map[string]string{}),
|
||||
SearchURL: "https://www.google.com/search?q=$QUERY",
|
||||
MaxLines: 1000,
|
||||
CopyAndPasteWithMouse: true,
|
||||
}
|
||||
|
||||
func init() {
|
||||
DefaultConfig.KeyMapping[string(ActionCopy)] = addMod("c")
|
||||
DefaultConfig.KeyMapping[string(ActionPaste)] = addMod("v")
|
||||
DefaultConfig.KeyMapping[string(ActionSearch)] = addMod("g")
|
||||
DefaultConfig.KeyMapping[string(ActionToggleDebug)] = addMod("d")
|
||||
DefaultConfig.KeyMapping[string(ActionToggleSlomo)] = addMod(";")
|
||||
DefaultConfig.KeyMapping[string(ActionReportBug)] = addMod("r")
|
||||
DefaultConfig.KeyMapping[string(ActionBufferClear)] = addMod("k")
|
||||
func DefaultConfig() *Config {
|
||||
return &Config{
|
||||
DebugMode: false,
|
||||
ColourScheme: ColourScheme{
|
||||
Cursor: strToColourNoErr("#e8dfd6"),
|
||||
Foreground: strToColourNoErr("#e8dfd6"),
|
||||
Background: strToColourNoErr("#021b21"),
|
||||
Black: strToColourNoErr("#000000"),
|
||||
Red: strToColourNoErr("#800000"),
|
||||
Green: strToColourNoErr("#008000"),
|
||||
Yellow: strToColourNoErr("#808000"),
|
||||
Blue: strToColourNoErr("#000080"),
|
||||
Magenta: strToColourNoErr("#800080"),
|
||||
Cyan: strToColourNoErr("#008080"),
|
||||
LightGrey: strToColourNoErr("#f2f2f2"),
|
||||
DarkGrey: strToColourNoErr("#808080"),
|
||||
LightRed: strToColourNoErr("#ff0000"),
|
||||
LightGreen: strToColourNoErr("#00ff00"),
|
||||
LightYellow: strToColourNoErr("#ffff00"),
|
||||
LightBlue: strToColourNoErr("#0000ff"),
|
||||
LightMagenta: strToColourNoErr("#ff00ff"),
|
||||
LightCyan: strToColourNoErr("#00ffff"),
|
||||
White: strToColourNoErr("#ffffff"),
|
||||
Selection: strToColourNoErr("#333366"),
|
||||
},
|
||||
KeyMapping: KeyMappingConfig(map[string]string{
|
||||
string(ActionCopy): addMod("c"),
|
||||
string(ActionPaste): addMod("v"),
|
||||
string(ActionSearch): addMod("g"),
|
||||
string(ActionToggleDebug): addMod("d"),
|
||||
string(ActionToggleSlomo): addMod(";"),
|
||||
string(ActionReportBug): addMod("r"),
|
||||
string(ActionBufferClear): addMod("k"),
|
||||
}),
|
||||
SearchURL: "https://www.google.com/search?q=$QUERY",
|
||||
MaxLines: 1000,
|
||||
CopyAndPasteWithMouse: true,
|
||||
}
|
||||
}
|
||||
|
||||
func addMod(keys string) string {
|
||||
standardMod := "ctrl + shift + "
|
||||
|
||||
if runtime.GOOS == "darwin" {
|
||||
standardMod = "super + "
|
||||
}
|
||||
|
||||
return standardMod + keys
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue