aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/new-account.go12
-rw-r--r--widgets/account-wizard.go36
2 files changed, 32 insertions, 16 deletions
diff --git a/commands/new-account.go b/commands/new-account.go
index 3d6551fd..a98b597c 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 6cd541e3..010d82d5 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{