summary refs log tree commit diff stats
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 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{