func LoadConfigPlugins()

in internal/task/plugins_config.go [23:57]


func LoadConfigPlugins(
	ctx context.Context,
	reg config.ProviderRegistry,
	k6 K6,
) (func(), error) {
	if len(k6.ConfigPlugins) < 1 {
		return func() {}, nil
	}

	var settingsList []configplugin.ClientBinarySettings
	for _, plugin := range k6.ConfigPlugins {
		// TODO: validation settings
		binaryPath := plugin.BinaryPath
		if binaryPath == "" {
			if p, ok := resolvePluginBinaryPathFromName(plugin.Namespace); ok {
				binaryPath = p
			} else {
				return func() {}, fmt.Errorf("plugin binary not found: %s", plugin.Namespace)
			}
		}

		// shallow copy the args to avoid unexpected mutation
		args := make([]string, len(plugin.Args))
		copy(args, plugin.Args)
		settings := configplugin.ClientBinarySettings{
			Namespace: plugin.Namespace,
			Path:      binaryPath,
			Args:      args,
		}

		settingsList = append(settingsList, settings)
	}

	return configplugin.RegisterFromClientBinaries(ctx, reg, settingsList)
}