github.com/nektos/act@v0.2.63-0.20240520024548-8acde99bfa9c/pkg/container/docker_volume.go (about) 1 //go:build !(WITHOUT_DOCKER || !(linux || darwin || windows || netbsd)) 2 3 package container 4 5 import ( 6 "context" 7 8 "github.com/docker/docker/api/types/filters" 9 "github.com/docker/docker/api/types/volume" 10 "github.com/nektos/act/pkg/common" 11 ) 12 13 func NewDockerVolumeRemoveExecutor(volumeName string, force bool) common.Executor { 14 return func(ctx context.Context) error { 15 cli, err := GetDockerClient(ctx) 16 if err != nil { 17 return err 18 } 19 defer cli.Close() 20 21 list, err := cli.VolumeList(ctx, volume.ListOptions{Filters: filters.NewArgs()}) 22 if err != nil { 23 return err 24 } 25 26 for _, vol := range list.Volumes { 27 if vol.Name == volumeName { 28 return removeExecutor(volumeName, force)(ctx) 29 } 30 } 31 32 // Volume not found - do nothing 33 return nil 34 } 35 } 36 37 func removeExecutor(volume string, force bool) common.Executor { 38 return func(ctx context.Context) error { 39 logger := common.Logger(ctx) 40 logger.Debugf("%sdocker volume rm %s", logPrefix, volume) 41 42 if common.Dryrun(ctx) { 43 return nil 44 } 45 46 cli, err := GetDockerClient(ctx) 47 if err != nil { 48 return err 49 } 50 defer cli.Close() 51 52 return cli.VolumeRemove(ctx, volume, force) 53 } 54 }