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)
}