Show account wizard if no accounts configured

This commit is contained in:
Drew DeVault 2019-05-22 11:35:55 -04:00
parent 1a45b793c7
commit 9b19e3ad05
4 changed files with 12 additions and 12 deletions

View file

@ -100,7 +100,8 @@ func mapName(raw string) string {
func loadAccountConfig(path string) ([]AccountConfig, error) { func loadAccountConfig(path string) ([]AccountConfig, error) {
file, err := ini.Load(path) file, err := ini.Load(path)
if err != nil { if err != nil {
return nil, err // No config triggers account configuration wizard
return nil, nil
} }
file.NameMapper = mapName file.NameMapper = mapName
@ -153,10 +154,6 @@ func loadAccountConfig(path string) ([]AccountConfig, error) {
accounts = append(accounts, account) accounts = append(accounts, account)
} }
if len(accounts) == 0 {
err = errors.New("No accounts configured in accounts.conf")
return nil, err
}
return accounts, nil return accounts, nil
} }
@ -359,7 +356,7 @@ func LoadConfig(root *string) (*AercConfig, error) {
func checkConfigPerms(filename string) error { func checkConfigPerms(filename string) error {
info, err := os.Stat(filename) info, err := os.Stat(filename)
if err != nil { if err != nil {
return err return nil // disregard absent files
} }
perms := info.Mode().Perm() perms := info.Mode().Perm()
goPerms := perms >> 3 goPerms := perms >> 3

View file

@ -66,7 +66,7 @@ func (ti *TextInput) Draw(ctx *Context) {
ctx.Printf(0, 0, tcell.StyleDefault, "%s%s", ti.prompt, string(ti.text)) ctx.Printf(0, 0, tcell.StyleDefault, "%s%s", ti.prompt, string(ti.text))
} }
cells := runewidth.StringWidth(string(ti.text[:ti.index]) + ti.prompt) cells := runewidth.StringWidth(string(ti.text[:ti.index]) + ti.prompt)
if cells != ti.cells && ti.focus { if ti.focus {
ctx.SetCursor(cells, 0) ctx.SetCursor(cells, 0)
} }
} }

View file

@ -356,8 +356,8 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
"To add another account in the future, run ':new-account'.")) "To add another account in the future, run ':new-account'."))
selecter = newSelecter([]string{ selecter = newSelecter([]string{
"Previous", "Previous",
"Finish",
"Finish & open tutorial", "Finish & open tutorial",
"Finish",
}, 1).OnChoose(func(option string) { }, 1).OnChoose(func(option string) {
switch option { switch option {
case "Previous": case "Previous":
@ -436,11 +436,8 @@ func (wizard *AccountWizard) finish(tutorial bool) {
} }
file, err := ini.Load(accountsConf) file, err := ini.Load(accountsConf)
if err == os.ErrNotExist { if err != nil {
file = ini.Empty() file = ini.Empty()
} else if err != nil {
wizard.errorFor(nil, err)
return
} }
var sec *ini.Section var sec *ini.Section

View file

@ -62,6 +62,12 @@ func NewAerc(conf *config.AercConfig, logger *log.Logger,
tabs.Add(view, acct.Name) tabs.Add(view, acct.Name)
} }
if len(conf.Accounts) == 0 {
wizard := NewAccountWizard(aerc.Config(), aerc)
wizard.Focus(true)
aerc.NewTab(wizard, "New account")
}
return aerc return aerc
} }