MCPcopy Create free account
hub / github.com/dagger/dagger / fileResult

Method fileResult

core/http.go:377–432  ·  view source on GitHub ↗
(
	ctx context.Context,
	query *Query,
	name string,
	permissions int,
)

Source from the content-addressed store, hash-verified

375}
376
377func (state *HTTPState) fileResult(
378 ctx context.Context,
379 query *Query,
380 name string,
381 permissions int,
382) (*HTTPFetchResult, error) {
383 if state.snapshot == nil {
384 return nil, fmt.Errorf("http state %q has no snapshot", state.URL)
385 }
386 newRef, err := query.SnapshotManager().New(
387 ctx,
388 state.snapshot,
389 bkcache.WithRecordType(bkclient.UsageRecordTypeRegular),
390 bkcache.WithDescription(fmt.Sprintf("http state resolve %s", name)),
391 )
392 if err != nil {
393 return nil, err
394 }
395 err = MountRef(ctx, newRef, func(root string, _ *mount.Mount) error {
396 src, err := RootPathWithoutFinalSymlink(root, httpStateCanonicalPath)
397 if err != nil {
398 return err
399 }
400 dst, err := RootPathWithoutFinalSymlink(root, name)
401 if err != nil {
402 return err
403 }
404 if err := os.Rename(src, dst); err != nil {
405 return TrimErrPathPrefix(err, root)
406 }
407 if err := os.Chmod(dst, os.FileMode(permissions)); err != nil {
408 return TrimErrPathPrefix(err, root)
409 }
410 return nil
411 })
412 if err != nil {
413 _ = newRef.Release(context.WithoutCancel(ctx))
414 return nil, err
415 }
416 snap, err := newRef.Commit(ctx)
417 if err != nil {
418 return nil, err
419 }
420 file := &File{
421 Platform: query.Platform(),
422 File: new(LazyAccessor[string, *File]),
423 Snapshot: new(LazyAccessor[bkcache.ImmutableRef, *File]),
424 }
425 file.File.setValue(name)
426 file.Snapshot.setValue(snap)
427 return &HTTPFetchResult{
428 File: file,
429 ContentDigest: state.ContentDigest,
430 LastModified: state.LastModified,
431 }, nil
432}
433
434func FetchHTTPFile(

Callers 1

ResolveMethod · 0.95

Calls 10

TrimErrPathPrefixFunction · 0.85
MountRefFunction · 0.70
NewMethod · 0.65
SnapshotManagerMethod · 0.65
ReleaseMethod · 0.65
CommitMethod · 0.65
PlatformMethod · 0.65
WithDescriptionMethod · 0.45
setValueMethod · 0.45

Tested by

no test coverage detected