diff options
author | Nicolai Dagestad <nicolai@dagestad.fr> | 2020-08-01 14:25:13 +0200 |
---|---|---|
committer | Reto Brunner <reto@labrat.space> | 2020-08-03 06:30:28 +0200 |
commit | 548a5fff68a648a5e0b6fd909e3c21463addc8af (patch) | |
tree | 3051b499fe24c374e70723f6dd5d5a2c91dc7e27 | |
parent | 3d784c5d8c7d037e38159fc1753773a2e81aa43e (diff) | |
download | aerc-548a5fff68a648a5e0b6fd909e3c21463addc8af.tar.gz |
Set environment variables for the exec command
-rw-r--r-- | commands/exec.go | 16 | ||||
-rw-r--r-- | doc/aerc.1.scd | 4 |
2 files changed, 19 insertions, 1 deletions
diff --git a/commands/exec.go b/commands/exec.go index e15afbe..771c528 100644 --- a/commands/exec.go +++ b/commands/exec.go @@ -3,6 +3,7 @@ package commands import ( "errors" "fmt" + "os" "os/exec" "time" @@ -29,7 +30,22 @@ func (ExecCmd) Execute(aerc *widgets.Aerc, args []string) error { if len(args) < 2 { return errors.New("Usage: exec [cmd...]") } + cmd := exec.Command(args[1], args[2:]...) + env := os.Environ() + + switch view := aerc.SelectedTab().(type) { + case *widgets.AccountView: + env = append(env, fmt.Sprintf("account=%s", view.AccountConfig().Name)) + env = append(env, fmt.Sprintf("folder=%s", view.Directories().Selected())) + case *widgets.MessageViewer: + acct := view.SelectedAccount() + env = append(env, fmt.Sprintf("account=%s", acct.AccountConfig().Name)) + env = append(env, fmt.Sprintf("folder=%s", acct.Directories().Selected())) + } + + cmd.Env = env + go func() { err := cmd.Run() if err != nil { diff --git a/doc/aerc.1.scd b/doc/aerc.1.scd index 40265f9..89189d5 100644 --- a/doc/aerc.1.scd +++ b/doc/aerc.1.scd @@ -47,7 +47,9 @@ These commands work in any context. as a delta from the selected tab. *exec* <command...> - Executes an arbitrary command in the background. + Executes an arbitrary command in the background. Aerc will set the + environement variables *$account* and *$folder* when the command is + executed from an Account tab or an opened message. *Note*: commands executed in this way are not executed with the shell. |