MCPcopy Index your code
hub / github.com/dagger/dagger / DecodePersistedObject

Method DecodePersistedObject

core/git.go:296–352  ·  view source on GitHub ↗
(ctx context.Context, dag *dagql.Server, resultID uint64, _ *dagql.ResultCall, payload json.RawMessage)

Source from the content-addressed store, hash-verified

294}
295
296func (*GitRepository) DecodePersistedObject(ctx context.Context, dag *dagql.Server, resultID uint64, _ *dagql.ResultCall, payload json.RawMessage) (dagql.Typed, error) {
297 var persisted persistedGitRepositoryPayload
298 if err := json.Unmarshal(payload, &persisted); err != nil {
299 return nil, fmt.Errorf("decode persisted git repository payload: %w", err)
300 }
301 var remote gitutil.Remote
302 if len(persisted.RemoteJSON) > 0 && string(persisted.RemoteJSON) != "null" {
303 if err := json.Unmarshal(persisted.RemoteJSON, &remote); err != nil {
304 return nil, fmt.Errorf("decode persisted git repository remote: %w", err)
305 }
306 }
307
308 repo := &GitRepository{
309 Remote: &remote,
310 DiscardGitDir: persisted.DiscardGitDir,
311 }
312 switch persisted.Form {
313 case persistedGitRepositoryFormLocal:
314 if persisted.Local == nil {
315 return nil, fmt.Errorf("decode persisted git repository: missing local payload")
316 }
317 dir, err := loadPersistedObjectResultByResultID[*Directory](ctx, dag, persisted.Local.DirectoryResultID, "git repository directory")
318 if err != nil {
319 return nil, err
320 }
321 repo.Backend = &LocalGitRepository{Directory: dir}
322 case persistedGitRepositoryFormRemote:
323 if persisted.Remote == nil {
324 return nil, fmt.Errorf("decode persisted git repository: missing remote payload")
325 }
326 parsedURL, err := gitutil.ParseURL(persisted.Remote.URL)
327 if err != nil {
328 return nil, fmt.Errorf("decode persisted git repository URL: %w", err)
329 }
330 backend := &RemoteGitRepository{
331 URL: parsedURL,
332 SSHKnownHosts: persisted.Remote.SSHKnownHosts,
333 AuthUsername: persisted.Remote.AuthUsername,
334 Platform: persisted.Remote.Platform,
335 }
336 var mirror dagql.ObjectResult[*RemoteGitMirror]
337 if err := dag.Select(ctx, dag.Root(), &mirror, dagql.Selector{
338 Field: "_remoteGitMirror",
339 Args: []dagql.NamedInput{
340 {Name: "remoteURL", Value: dagql.String(parsedURL.Remote())},
341 },
342 }); err != nil {
343 return nil, fmt.Errorf("decode persisted git repository remote mirror: %w", err)
344 }
345 backend.Mirror = mirror
346 repo.Backend = backend
347 repo.URL = dagql.NonNull(dagql.String(parsedURL.String()))
348 default:
349 return nil, fmt.Errorf("decode persisted git repository: unsupported form %q", persisted.Form)
350 }
351 return repo, nil
352}
353

Callers

nothing calls this directly

Calls 8

ParseURLFunction · 0.92
StringTypeAlias · 0.92
NonNullFunction · 0.92
UnmarshalMethod · 0.65
SelectMethod · 0.65
RemoteMethod · 0.65
StringMethod · 0.65
RootMethod · 0.45

Tested by

no test coverage detected