1package authoring23import (4 "fmt"5 "os"67 "github.com/FelineStateMachine/atlas/format/vnext"8)910func attachAssets(project Project, plan Plan, captures map[string]Capture, cache *Cache, volume *vnext.Volume) error {11 for _, asset := range project.Assets {12 planned, ok := assetPlan(plan, asset.ID)13 if !ok {14 return fmt.Errorf("asset %s has no planned request", asset.ID)15 }16 capture := captures[planned.ID]17 data, err := os.ReadFile(cache.BlobPath(capture.Body))18 if err != nil {19 return fmt.Errorf("read captured asset %s: %w", asset.ID, err)20 }21 volume.Assets = append(volume.Assets, vnext.Asset{22 ID: asset.ID, MediaType: asset.MediaType, Data: data, Provenance: asset.Provenance,23 })24 }25 return nil26}2728func assetPlan(plan Plan, asset string) (PlannedRequest, bool) {29 for _, request := range plan.Requests {30 if request.Kind == RequestAsset && request.Asset == asset {31 return request, true32 }33 }34 return PlannedRequest{}, false35}