mirror of https://github.com/Rudi9719/kbtui.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.5 KiB
122 lines
3.5 KiB
// +build !rm_basic_commands allcommands setcmd |
|
|
|
package main |
|
|
|
import ( |
|
"fmt" |
|
"os" |
|
"strings" |
|
|
|
"github.com/pelletier/go-toml" |
|
) |
|
|
|
func init() { |
|
command := Command{ |
|
Cmd: []string{"set", "config"}, |
|
Description: "Change various settings", |
|
Help: "", |
|
Exec: cmdSet, |
|
} |
|
|
|
RegisterCommand(command) |
|
} |
|
func printSetting(cmd []string) { |
|
switch cmd[1] { |
|
case "load": |
|
loadFromToml() |
|
printInfo("Loading config from toml") |
|
case "downloadPath": |
|
printInfo(fmt.Sprintf("Setting for %s -> %s", cmd[1], downloadPath)) |
|
case "outputFormat": |
|
printInfo(fmt.Sprintf("Setting for %s -> %s", cmd[1], outputFormat)) |
|
case "dateFormat": |
|
printInfo(fmt.Sprintf("Setting for %s -> %s", cmd[1], dateFormat)) |
|
case "timeFormat": |
|
printInfo(fmt.Sprintf("Setting for %s -> %s", cmd[1], timeFormat)) |
|
case "cmdPrefix": |
|
printInfo(fmt.Sprintf("Setting for %s -> %s", cmd[1], cmdPrefix)) |
|
default: |
|
printError(fmt.Sprintf("Unknown config value %s", cmd[1])) |
|
} |
|
} |
|
func cmdSet(cmd []string) { |
|
if len(cmd) < 2 { |
|
printError("No config value specified") |
|
return |
|
} |
|
if len(cmd) < 3 { |
|
printSetting(cmd) |
|
return |
|
} |
|
switch cmd[1] { |
|
case "downloadPath": |
|
if len(cmd) != 3 { |
|
printError("Invalid download path.") |
|
} |
|
downloadPath = cmd[2] |
|
case "outputFormat": |
|
outputFormat = strings.Join(cmd[1:], " ") |
|
case "dateFormat": |
|
dateFormat = strings.Join(cmd[1:], " ") |
|
case "timeFormat": |
|
timeFormat = strings.Join(cmd[1:], " ") |
|
case "cmdPrefix": |
|
cmdPrefix = cmd[2] |
|
default: |
|
printError(fmt.Sprintf("Unknown config value %s", cmd[1])) |
|
} |
|
|
|
} |
|
func loadFromToml() { |
|
configFile, env := os.LookupEnv("KBTUI_CFG") |
|
if !env { |
|
configFile = "kbtui.toml" |
|
} |
|
|
|
config, err := toml.LoadFile(configFile) |
|
if err != nil { |
|
printError(fmt.Sprintf("Could not read config file: %+v", err)) |
|
return |
|
} |
|
colorless = config.GetDefault("Basics.colorless", false).(bool) |
|
if config.Has("Basics.colorless") { |
|
colorless = config.Get("Basics.colorless").(bool) |
|
} |
|
if config.Has("Basics.downloadPath") { |
|
downloadPath = config.Get("Basics.downloadPath").(string) |
|
} |
|
if config.Has("Basics.cmdPrefix") { |
|
cmdPrefix = config.Get("Basics.cmdPrefix").(string) |
|
} |
|
if config.Has("Formatting.outputFormat") { |
|
outputFormat = config.Get("Formatting.outputFormat").(string) |
|
} |
|
if config.Has("Formatting.dateFormat") { |
|
dateFormat = config.Get("Formatting.dateFormat").(string) |
|
} |
|
if config.Has("Formatting.timeFormat") { |
|
timeFormat = config.Get("Formatting.timeFormat").(string) |
|
} |
|
channelsColor = styleFromConfig(config, "channels.basic") |
|
|
|
channelsHeaderColor = styleFromConfig(config, "channels.header") |
|
channelUnreadColor = styleFromConfig(config, "channels.unread") |
|
|
|
mentionColor = styleFromConfig(config, "message.mention") |
|
messageHeaderColor = styleFromConfig(config, "message.header") |
|
messageIDColor = styleFromConfig(config, "message.id") |
|
messageTimeColor = styleFromConfig(config, "message.time") |
|
messageSenderDefaultColor = styleFromConfig(config, "message.sender_default") |
|
messageSenderDeviceColor = styleFromConfig(config, "message.sender_device") |
|
messageBodyColor = styleFromConfig(config, "message.body") |
|
messageAttachmentColor = styleFromConfig(config, "message.attachment") |
|
messageLinkURLColor = styleFromConfig(config, "message.link_url") |
|
messageLinkKeybaseColor = styleFromConfig(config, "message.link_keybase") |
|
messageReactionColor = styleFromConfig(config, "message.reaction") |
|
messageCodeColor = styleFromConfig(config, "message.code") |
|
|
|
feedColor = styleFromConfig(config, "feed.basic") |
|
errorColor = styleFromConfig(config, "feed.error") |
|
|
|
RunCommand("clean") |
|
}
|
|
|