( ctx context.Context, srcInst dagql.ObjectResult[*core.ModuleSource], genDirInst dagql.ObjectResult[*core.Directory], clientGeneratorConfig *modules.ModuleConfigClient, )
| 2526 | } |
| 2527 | |
| 2528 | func (s *moduleSourceSchema) runClientGenerator( |
| 2529 | ctx context.Context, |
| 2530 | srcInst dagql.ObjectResult[*core.ModuleSource], |
| 2531 | genDirInst dagql.ObjectResult[*core.Directory], |
| 2532 | clientGeneratorConfig *modules.ModuleConfigClient, |
| 2533 | ) (dagql.ObjectResult[*core.Directory], error) { |
| 2534 | src := srcInst.Self() |
| 2535 | |
| 2536 | query, err := core.CurrentQuery(ctx) |
| 2537 | if err != nil { |
| 2538 | return genDirInst, err |
| 2539 | } |
| 2540 | dag, err := query.Server.Server(ctx) |
| 2541 | if err != nil { |
| 2542 | return genDirInst, fmt.Errorf("failed to get dag server: %w", err) |
| 2543 | } |
| 2544 | |
| 2545 | sdk, err := sdk.NewLoader().SDKForModule( |
| 2546 | ctx, |
| 2547 | query, |
| 2548 | &core.SDKConfig{ |
| 2549 | Source: clientGeneratorConfig.Generator, |
| 2550 | }, |
| 2551 | src, |
| 2552 | ) |
| 2553 | if err != nil { |
| 2554 | return genDirInst, fmt.Errorf("failed to load generator module %s: %w", clientGeneratorConfig.Generator, err) |
| 2555 | } |
| 2556 | |
| 2557 | clientGeneratorImpl, ok := sdk.AsClientGenerator() |
| 2558 | if !ok { |
| 2559 | if srcInst.Self() == nil || srcInst.Self().SDK == nil { |
| 2560 | return genDirInst, fmt.Errorf("module source has no SDK configured") |
| 2561 | } |
| 2562 | return genDirInst, ErrSDKClientGeneratorNotImplemented{SDK: srcInst.Self().SDK.Source} |
| 2563 | } |
| 2564 | |
| 2565 | requiredClientGenerationFiles, err := clientGeneratorImpl.RequiredClientGenerationFiles(ctx) |
| 2566 | if err != nil { |
| 2567 | return genDirInst, fmt.Errorf("failed to get required client generation files: %w", err) |
| 2568 | } |
| 2569 | |
| 2570 | // Add extra files required to correctly generate the client if there are any. |
| 2571 | var source dagql.ObjectResult[*core.ModuleSource] |
| 2572 | err = dag.Select(ctx, srcInst, &source, dagql.Selector{ |
| 2573 | Field: "withIncludes", |
| 2574 | Args: []dagql.NamedInput{ |
| 2575 | { |
| 2576 | Name: "patterns", |
| 2577 | Value: dagql.ArrayInput[dagql.String](requiredClientGenerationFiles), |
| 2578 | }, |
| 2579 | }, |
| 2580 | }) |
| 2581 | if err != nil { |
| 2582 | return genDirInst, fmt.Errorf("failed to add module source required files: %w", err) |
| 2583 | } |
| 2584 | |
| 2585 | deps, err := s.loadDependencyModules(ctx, srcInst, srcInst) |
no test coverage detected