From 0771eaf24c5a1f0e37e0a51fefe1cb5090fa7e2b Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Wed, 5 Jun 2019 00:05:46 +0200 Subject: [PATCH] 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 --- commands/new-account.go | 12 ++++++++++-- widgets/account-wizard.go | 36 ++++++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/commands/new-account.go b/commands/new-account.go index 3d6551f..a98b597 100644 --- a/commands/new-account.go +++ b/commands/new-account.go @@ -4,6 +4,7 @@ import ( "errors" "git.sr.ht/~sircmpwn/aerc/widgets" + "git.sr.ht/~sircmpwn/getopt" ) func init() { @@ -11,10 +12,17 @@ func init() { } func CommandNewAccount(aerc *widgets.Aerc, args []string) error { - if len(args) != 1 { - return errors.New("Usage: new-account") + opts, _, err := getopt.Getopts(args[1:], "t") + if err != nil { + return errors.New("Usage: new-account [-t]") } wizard := widgets.NewAccountWizard(aerc.Config(), aerc) + for _, opt := range opts { + switch opt.Option { + case 't': + wizard.ConfigureTemporaryAccount(true) + } + } aerc.NewTab(wizard, "New account") return nil } diff --git a/widgets/account-wizard.go b/widgets/account-wizard.go index 6cd541e..010d82d 100644 --- a/widgets/account-wizard.go +++ b/widgets/account-wizard.go @@ -39,12 +39,13 @@ const ( type AccountWizard struct { ui.Invalidatable - aerc *Aerc - conf *config.AercConfig - step int - steps []*ui.Grid - focus int - testing bool + aerc *Aerc + conf *config.AercConfig + step int + steps []*ui.Grid + focus int + temporary bool + testing bool // CONFIGURE_BASICS accountName *ui.TextInput email *ui.TextInput @@ -76,6 +77,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { accountName: ui.NewTextInput("").Prompt("> "), aerc: aerc, conf: conf, + temporary: false, copySent: true, email: ui.NewTextInput("").Prompt("> "), fullName: ui.NewTextInput("").Prompt("> "), @@ -378,6 +380,10 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { return wizard } +func (wizard *AccountWizard) ConfigureTemporaryAccount(temporary bool) { + wizard.temporary = temporary +} + func (wizard *AccountWizard) errorFor(d ui.Interactive, err error) { if d == nil { wizard.aerc.PushStatus(" "+err.Error(), 10*time.Second). @@ -459,14 +465,16 @@ func (wizard *AccountWizard) finish(tutorial bool) { sec.NewKey("copy-to", "Sent") } - f, err := os.OpenFile(accountsConf, os.O_WRONLY|os.O_CREATE, 0600) - if err != nil { - wizard.errorFor(nil, err) - return - } - if _, err = file.WriteTo(f); err != nil { - wizard.errorFor(nil, err) - return + if !wizard.temporary { + f, err := os.OpenFile(accountsConf, os.O_WRONLY|os.O_CREATE, 0600) + if err != nil { + wizard.errorFor(nil, err) + return + } + if _, err = file.WriteTo(f); err != nil { + wizard.errorFor(nil, err) + return + } } account := config.AccountConfig{