Set environment variables for the exec command
This commit is contained in:
parent
3d784c5d8c
commit
548a5fff68
2 changed files with 19 additions and 1 deletions
|
@ -3,6 +3,7 @@ package commands
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -29,7 +30,22 @@ func (ExecCmd) Execute(aerc *widgets.Aerc, args []string) error {
|
||||||
if len(args) < 2 {
|
if len(args) < 2 {
|
||||||
return errors.New("Usage: exec [cmd...]")
|
return errors.New("Usage: exec [cmd...]")
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := exec.Command(args[1], args[2:]...)
|
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() {
|
go func() {
|
||||||
err := cmd.Run()
|
err := cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -47,7 +47,9 @@ These commands work in any context.
|
||||||
as a delta from the selected tab.
|
as a delta from the selected tab.
|
||||||
|
|
||||||
*exec* <command...>
|
*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.
|
*Note*: commands executed in this way are not executed with the shell.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue