diff --git a/cmd/config/internal/commands/run-fns.go b/cmd/config/internal/commands/run-fns.go index 816c67591..a07c2e0a3 100644 --- a/cmd/config/internal/commands/run-fns.go +++ b/cmd/config/internal/commands/run-fns.go @@ -70,6 +70,8 @@ func GetRunFnRunner(name string) *RunFnRunner { r.Command.Flags().StringArrayVarP( &r.Env, "env", "e", []string{}, "a list of environment variables to be used by functions") + r.Command.Flags().BoolVar( + &r.AsCurrentUser, "as-current-user", false, "use the uid and gid that kpt is running with to run the function in the container") return r } @@ -97,6 +99,7 @@ type RunFnRunner struct { Mounts []string LogSteps bool Env []string + AsCurrentUser bool } func (r *RunFnRunner) runE(c *cobra.Command, args []string) error { @@ -312,6 +315,7 @@ func (r *RunFnRunner) preRunE(c *cobra.Command, args []string) error { ResultsDir: r.ResultsDir, LogSteps: r.LogSteps, Env: r.Env, + AsCurrentUser: r.AsCurrentUser, } // don't consider args for the function diff --git a/cmd/config/internal/commands/run_test.go b/cmd/config/internal/commands/run_test.go index d56dbb550..bf9c68227 100644 --- a/cmd/config/internal/commands/run_test.go +++ b/cmd/config/internal/commands/run_test.go @@ -300,6 +300,16 @@ apiVersion: v1 Env: []string{"FOO=BAR", "BAR"}, }, }, + { + name: "as current user", + args: []string{"run", "dir", "--as-current-user"}, + path: "dir", + expectedStruct: &runfn.RunFns{ + Path: "dir", + AsCurrentUser: true, + Env: []string{}, + }, + }, } for i := range tests {