func RunTask()

in internal/task/run.go [19:62]


func RunTask(
	ctx context.Context,
	target target.Target,
	getConfigProviderByName config.GetConfigProviderByName,
	taskConfig *Schema,
	sourceBaseDir string,
	script string,
	options ...RunTaskOption,
) error {
	opt := defaultRunTaskOption()
	for _, o := range options {
		if err := o.apply(opt); err != nil {
			return err
		}
	}

	if s, err := filepath.Abs(filepath.Clean(sourceBaseDir)); err != nil {
		return fmt.Errorf("invalid source base dir %q: %w", sourceBaseDir, err)
	} else {
		sourceBaseDir = s
	}

	kubeconfig, ok := target.GetKubeconfig()
	if !ok {
		return fmt.Errorf("target does not have kubeconfig")
	}
	kubeClient, err := opt.KubeClientFactory(kubeconfig)
	if err != nil {
		return fmt.Errorf("failed to create kubernetes client: %w", err)
	}

	tr := &taskRunner{
		target:                  target,
		kubeClient:              kubeClient,
		instances:               opt.Instances,
		followLogs:              opt.FollowLogs,
		getConfigProviderByName: getConfigProviderByName,
		taskConfig:              taskConfig,
		sourceBaseDir:           sourceBaseDir,
		script:                  script,
	}

	return tr.Run(ctx)
}