github.com/dnephin/dobi@v0.15.0/tasks/mount/actions.go (about) 1 package mount 2 3 import ( 4 "fmt" 5 6 "github.com/dnephin/dobi/config" 7 "github.com/dnephin/dobi/tasks/context" 8 "github.com/dnephin/dobi/tasks/task" 9 "github.com/dnephin/dobi/tasks/types" 10 ) 11 12 // GetTaskConfig returns a new task for the action 13 func GetTaskConfig(name, action string, conf *config.MountConfig) (types.TaskConfig, error) { 14 15 newTaskConfig := func(name task.Name, builder types.TaskBuilder) (types.TaskConfig, error) { 16 return types.NewTaskConfig(name, conf, task.NoDependencies, builder), nil 17 } 18 switch action { 19 case "", "create": 20 return newTaskConfig(task.NewDefaultName(name, action), NewTask(runCreate)) 21 case "remove", "rm": 22 return newTaskConfig(task.NewName(name, action), NewTask(remove)) 23 default: 24 return nil, fmt.Errorf("invalid mount action %q for task %q", action, name) 25 } 26 } 27 28 // NewTask creates a new Task object 29 func NewTask( 30 runFunc func(task *Task, ctx *context.ExecuteContext) (bool, error)) types.TaskBuilder { 31 return func(name task.Name, conf config.Resource) types.Task { 32 return &Task{name: name, config: conf.(*config.MountConfig), run: runFunc} 33 } 34 }