Introduce :new-account -t

Adding the [-t] temporary flag to the new-account command
- when using -t a newly created account will not be stored into the
accounts.conf

Issue #134
This commit is contained in:
JanUlrich 2019-06-05 00:05:46 +02:00 committed by Drew DeVault
parent 7446a17830
commit 0771eaf24c
2 changed files with 32 additions and 16 deletions

View File

@ -4,6 +4,7 @@ import (
"errors" "errors"
"git.sr.ht/~sircmpwn/aerc/widgets" "git.sr.ht/~sircmpwn/aerc/widgets"
"git.sr.ht/~sircmpwn/getopt"
) )
func init() { func init() {
@ -11,10 +12,17 @@ func init() {
} }
func CommandNewAccount(aerc *widgets.Aerc, args []string) error { func CommandNewAccount(aerc *widgets.Aerc, args []string) error {
if len(args) != 1 { opts, _, err := getopt.Getopts(args[1:], "t")
return errors.New("Usage: new-account") if err != nil {
return errors.New("Usage: new-account [-t]")
} }
wizard := widgets.NewAccountWizard(aerc.Config(), aerc) wizard := widgets.NewAccountWizard(aerc.Config(), aerc)
for _, opt := range opts {
switch opt.Option {
case 't':
wizard.ConfigureTemporaryAccount(true)
}
}
aerc.NewTab(wizard, "New account") aerc.NewTab(wizard, "New account")
return nil return nil
} }

View File

@ -39,12 +39,13 @@ const (
type AccountWizard struct { type AccountWizard struct {
ui.Invalidatable ui.Invalidatable
aerc *Aerc aerc *Aerc
conf *config.AercConfig conf *config.AercConfig
step int step int
steps []*ui.Grid steps []*ui.Grid
focus int focus int
testing bool temporary bool
testing bool
// CONFIGURE_BASICS // CONFIGURE_BASICS
accountName *ui.TextInput accountName *ui.TextInput
email *ui.TextInput email *ui.TextInput
@ -76,6 +77,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
accountName: ui.NewTextInput("").Prompt("> "), accountName: ui.NewTextInput("").Prompt("> "),
aerc: aerc, aerc: aerc,
conf: conf, conf: conf,
temporary: false,
copySent: true, copySent: true,
email: ui.NewTextInput("").Prompt("> "), email: ui.NewTextInput("").Prompt("> "),
fullName: ui.NewTextInput("").Prompt("> "), fullName: ui.NewTextInput("").Prompt("> "),
@ -378,6 +380,10 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard {
return wizard return wizard
} }
func (wizard *AccountWizard) ConfigureTemporaryAccount(temporary bool) {
wizard.temporary = temporary
}
func (wizard *AccountWizard) errorFor(d ui.Interactive, err error) { func (wizard *AccountWizard) errorFor(d ui.Interactive, err error) {
if d == nil { if d == nil {
wizard.aerc.PushStatus(" "+err.Error(), 10*time.Second). wizard.aerc.PushStatus(" "+err.Error(), 10*time.Second).
@ -459,14 +465,16 @@ func (wizard *AccountWizard) finish(tutorial bool) {
sec.NewKey("copy-to", "Sent") sec.NewKey("copy-to", "Sent")
} }
f, err := os.OpenFile(accountsConf, os.O_WRONLY|os.O_CREATE, 0600) if !wizard.temporary {
if err != nil { f, err := os.OpenFile(accountsConf, os.O_WRONLY|os.O_CREATE, 0600)
wizard.errorFor(nil, err) if err != nil {
return wizard.errorFor(nil, err)
} return
if _, err = file.WriteTo(f); err != nil { }
wizard.errorFor(nil, err) if _, err = file.WriteTo(f); err != nil {
return wizard.errorFor(nil, err)
return
}
} }
account := config.AccountConfig{ account := config.AccountConfig{