71: Allow user to change config options at runtime
There is a LoadConf and a LoadConfFromFile. LoadConfFromFile reads the iniFile into memory and and calls LoadConf, which executes the old parsing commands from LoadConf (old func). The remaining of the LoadConfFromFile is the same as the old OldConf.
This commit is contained in:
parent
9bf1a0418b
commit
d85f671bdf
3 changed files with 129 additions and 51 deletions
commands
69
commands/set.go
Normal file
69
commands/set.go
Normal file
|
@ -0,0 +1,69 @@
|
|||
package commands
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"git.sr.ht/~sircmpwn/aerc/widgets"
|
||||
|
||||
"github.com/go-ini/ini"
|
||||
)
|
||||
|
||||
type Set struct{}
|
||||
|
||||
func setUsage() string {
|
||||
return "set <category>.<option> <value>"
|
||||
}
|
||||
|
||||
func init() {
|
||||
register(Set{})
|
||||
}
|
||||
|
||||
func (_ Set) Aliases() []string {
|
||||
return []string{"set"}
|
||||
|
||||
}
|
||||
|
||||
func (_ Set) Complete(aerc *widgets.Aerc, args []string) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func SetCore(aerc *widgets.Aerc, args []string) error {
|
||||
if len(args) != 3 {
|
||||
return errors.New("Usage: " + setUsage())
|
||||
}
|
||||
|
||||
config := aerc.Config()
|
||||
|
||||
parameters := strings.Split(args[1], ".")
|
||||
|
||||
if len(parameters) != 2 {
|
||||
return errors.New("Usage: " + setUsage())
|
||||
}
|
||||
|
||||
category := parameters[0]
|
||||
option := parameters[1]
|
||||
value := args[2]
|
||||
|
||||
new_file := ini.Empty()
|
||||
|
||||
section, err := new_file.NewSection(category)
|
||||
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err := section.NewKey(option, value); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := config.LoadConfig(new_file); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (_ Set) Execute(aerc *widgets.Aerc, args []string) error {
|
||||
return SetCore(aerc, args)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue