func execRun()

in main.go [876:918]


func execRun(cmd *cobra.Command, args []string) error {
	ctx, client, err := clientWithContext(cmd.Context())
	if err != nil {
		return misuseError(err)
	}

	execCmd := args[0]
	execArgs := args[1:]

	// Parse local env
	env := os.Environ()

	for i, e := range env {
		p := strings.SplitN(e, "=", 2)
		if len(p) < 2 {
			continue
		}

		k, v := p[0], p[1]
		if !berglas.IsReference(v) {
			continue
		}

		s, err := client.Resolve(ctx, v)
		if err != nil {
			return apiError(err)
		}
		env[i] = fmt.Sprintf("%s=%s", k, s)
	}

	execCmdFull, err := exec.LookPath(execCmd)
	if err != nil {
		return fmt.Errorf("failed to lookup path for %q: %w", execCmd, err)
	}

	// Unlike os/exec, execv(3) expects the arguments to include the command.
	execArgs = append([]string{execCmdFull}, execArgs...)

	if err := syscall.Exec(execCmdFull, execArgs, env); err != nil {
		return fmt.Errorf("failed to execute %q: %w", execCmd, err)
	}
	return nil
}