Skip to content

Commit

Permalink
hooks: set expected environment when executing
Browse files Browse the repository at this point in the history
During normal plugin execution (from the CLI), the CLI configures the
plugin command it's about to execute in order to pass all environment
variables on, as well as to set the ReExec env var that informs the
plugin about how it was executed, and which plugins rely on to check
whether they are being run standalone or not.

This commit adds the same behavior to hook invocations, which is
necessary for some plugins to know that they are not running standalone
so that they expose their root command at the correct level.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
  • Loading branch information
laurazard committed Apr 17, 2024
1 parent c0cc22d commit 5011759
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion cli-plugins/manager/plugin.go
Expand Up @@ -2,6 +2,7 @@ package manager

import (
"encoding/json"
"os"
"os/exec"
"path/filepath"
"regexp"
Expand Down Expand Up @@ -113,7 +114,10 @@ func (p *Plugin) RunHook(cmdName string, flags map[string]string) ([]byte, error
return nil, wrapAsPluginError(err, "failed to marshall hook data")
}

hookCmdOutput, err := exec.Command(p.Path, p.Name, HookSubcommandName, string(hDataBytes)).Output()
pCmd := exec.Command(p.Path, p.Name, HookSubcommandName, string(hDataBytes))
pCmd.Env = os.Environ()
pCmd.Env = append(pCmd.Env, ReexecEnvvar+"="+os.Args[0])
hookCmdOutput, err := pCmd.Output()
if err != nil {
return nil, wrapAsPluginError(err, "failed to execute plugin hook subcommand")
}
Expand Down

0 comments on commit 5011759

Please sign in to comment.