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  }