| 27 | } |
| 28 | |
| 29 | func NewVolumeCache(imageRef name.Reference, cacheType CacheInfo, suffix string, dockerClient DockerClient, logger logging.Logger) (*VolumeCache, error) { |
| 30 | var volumeName string |
| 31 | if cacheType.Source == "" { |
| 32 | volumeKey, err := getVolumeKey(imageRef, logger) |
| 33 | if err != nil { |
| 34 | return nil, err |
| 35 | } |
| 36 | sum := sha256.Sum256([]byte(imageRef.Name() + volumeKey)) |
| 37 | vol := paths.FilterReservedNames(fmt.Sprintf("%s-%x", sanitizedRef(imageRef), sum[:6])) |
| 38 | volumeName = fmt.Sprintf("pack-cache-%s.%s", vol, suffix) |
| 39 | } else { |
| 40 | volumeName = paths.FilterReservedNames(cacheType.Source) |
| 41 | } |
| 42 | |
| 43 | return &VolumeCache{ |
| 44 | volume: volumeName, |
| 45 | docker: dockerClient, |
| 46 | }, nil |
| 47 | } |
| 48 | |
| 49 | func getVolumeKey(imageRef name.Reference, logger logging.Logger) (string, error) { |
| 50 | var foundKey string |