Add resources.Copy

Implemented by most Resource objects, but not Page (for now).

Fixes #9313
This commit is contained in:
Bjørn Erik Pedersen
2022-05-24 09:34:36 +02:00
parent 6f7fbe03b1
commit cd0112a05a
8 changed files with 169 additions and 13 deletions

View File

@@ -42,6 +42,7 @@ import (
var (
_ resource.ContentResource = (*resourceAdapter)(nil)
_ resourceCopier = (*resourceAdapter)(nil)
_ resource.ReadSeekCloserResource = (*resourceAdapter)(nil)
_ resource.Resource = (*resourceAdapter)(nil)
_ resource.Source = (*resourceAdapter)(nil)
@@ -175,6 +176,19 @@ func (r *resourceAdapter) Data() any {
return r.target.Data()
}
func (r resourceAdapter) cloneTo(targetPath string) resource.Resource {
newtTarget := r.target.cloneTo(targetPath)
newInner := &resourceAdapterInner{
spec: r.spec,
target: newtTarget.(transformableResource),
}
if r.resourceAdapterInner.publishOnce != nil {
newInner.publishOnce = &publishOnce{}
}
r.resourceAdapterInner = newInner
return &r
}
func (r *resourceAdapter) Crop(spec string) (images.ImageResource, error) {
return r.getImageOps().Crop(spec)
}
@@ -596,6 +610,7 @@ type transformableResource interface {
resource.ContentProvider
resource.Resource
resource.Identifier
resourceCopier
}
type transformationUpdate struct {