cloneGitTree clones a git repository and returns its directory tree.
(ctx context.Context, dag *dagql.Server, cloneRef, version string)
| 624 | |
| 625 | // cloneGitTree clones a git repository and returns its directory tree. |
| 626 | func (srv *Server) cloneGitTree(ctx context.Context, dag *dagql.Server, cloneRef, version string) (dagql.ObjectResult[*core.Directory], error) { |
| 627 | // Build the ref selector — use "head" if no version specified. |
| 628 | refSelector := dagql.Selector{Field: "head"} |
| 629 | if version != "" { |
| 630 | refSelector = dagql.Selector{ |
| 631 | Field: "ref", |
| 632 | Args: []dagql.NamedInput{{Name: "name", Value: dagql.String(version)}}, |
| 633 | } |
| 634 | } |
| 635 | |
| 636 | var tree dagql.ObjectResult[*core.Directory] |
| 637 | err := dag.Select(ctx, dag.Root(), &tree, |
| 638 | dagql.Selector{ |
| 639 | Field: "git", |
| 640 | Args: []dagql.NamedInput{ |
| 641 | {Name: "url", Value: dagql.String(cloneRef)}, |
| 642 | }, |
| 643 | }, |
| 644 | refSelector, |
| 645 | dagql.Selector{Field: "tree"}, |
| 646 | ) |
| 647 | if err != nil { |
| 648 | return tree, fmt.Errorf("cloning repo: %w", err) |
| 649 | } |
| 650 | return tree, nil |
| 651 | } |
| 652 | |
| 653 | // ensureModulesLoaded loads all pending modules (from compat parsing, |
| 654 | // the implicit CWD module, and -m flags). Called from serveQuery after |
no test coverage detected