Skip to content

Commit

Permalink
TaskDefinition public API (#261)
Browse files Browse the repository at this point in the history
  • Loading branch information
pior committed Jan 12, 2019
1 parent 34bbb27 commit dee3f3a
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 36 deletions.
2 changes: 1 addition & 1 deletion pkg/tasks/apt.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
)

func init() {
Register("apt", "Apt", parserApt).SetOsRequirement("debian")
Register("apt", "Apt", parserApt).SetOSRequirement("debian")
}

func parserApt(config *TaskConfig, task *Task) error {
Expand Down
2 changes: 1 addition & 1 deletion pkg/tasks/homebrew.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
)

func init() {
Register("homebrew", "Homebrew", parserHomebrew).SetOsRequirement("macos")
Register("homebrew", "Homebrew", parserHomebrew).SetOSRequirement("macos")
}

func parserHomebrew(config *TaskConfig, task *Task) error {
Expand Down
4 changes: 2 additions & 2 deletions pkg/tasks/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (

// Task represents a task created by a taskDefinition.parser and specified by the TaskInfo
type Task struct {
*taskDefinition
*TaskDefinition
header string
actions []taskAction
feature features.FeatureInfo
Expand Down Expand Up @@ -36,7 +36,7 @@ func (t *Task) AddActionWithBuilder(description string, runFunc func(*Context) e
}

func (t *Task) Describe() string {
description := fmt.Sprintf("Task %s (%s)", t.name, t.header)
description := fmt.Sprintf("Task %s (%s)", t.Name, t.header)

if t.feature.Name != "" {
description += fmt.Sprintf(" has feature %s:%s and", t.feature.Name, t.feature.Param)
Expand Down
26 changes: 13 additions & 13 deletions pkg/tasks/task_definition.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,41 @@ import (

type taskParser func(*TaskConfig, *Task) error

type taskDefinition struct {
key string // the value used in dev.yml to identify a task
name string // the displayed name of the task
requiredTask string // another task that should be declared before this task
parser taskParser // the config parser for this task
osRequirement string // The platform this task can run on. "debian", "macos"
type TaskDefinition struct {
Key string // the value used in dev.yml to identify a task
Name string // the displayed name of the task
RequiredTask string // another task that should be declared before this task
Parser taskParser // the config parser for this task
OSRequirement string // The platform this task can run on. "debian", "macos"
}

var taskDefinitions = make(map[string]*taskDefinition)
var taskDefinitions = make(map[string]*TaskDefinition)

func Register(key, name string, parserFunc taskParser) *taskDefinition {
func Register(key, name string, parserFunc taskParser) *TaskDefinition {
if _, ok := taskDefinitions[key]; ok {
panic(fmt.Sprint("Can't re-register a taskDefinition:", name))
}
if key == "" || name == "" {
panic("key and name cannot be empty")
}

td := &taskDefinition{key: key, name: name, parser: parserFunc}
td := &TaskDefinition{Key: key, Name: name, Parser: parserFunc}
taskDefinitions[key] = td
return td
}

func (t *taskDefinition) SetRequiredTask(name string) *taskDefinition {
func (t *TaskDefinition) SetRequiredTask(name string) *TaskDefinition {
if name == "" {
panic("name cannot be empty")
}
t.requiredTask = name
t.RequiredTask = name
return t
}

func (t *taskDefinition) SetOsRequirement(requirement string) *taskDefinition {
func (t *TaskDefinition) SetOSRequirement(requirement string) *TaskDefinition {
if requirement == "" {
panic("requirement cannot be empty")
}
t.osRequirement = requirement
t.OSRequirement = requirement
return t
}
16 changes: 8 additions & 8 deletions pkg/tasks/task_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ func buildFromDefinition(definition interface{}) (task *Task, err error) {

taskDef := taskDefinitions[taskConfig.name]
if taskDef == nil {
taskDef = &taskDefinition{
name: "Unknown",
parser: parseUnknown,
taskDef = &TaskDefinition{
Name: "Unknown",
Parser: parseUnknown,
}
}

task = &Task{taskDefinition: taskDef}
err = taskDef.parser(taskConfig, task)
task = &Task{TaskDefinition: taskDef}
err = taskDef.Parser(taskConfig, task)
return
}

Expand Down Expand Up @@ -84,12 +84,12 @@ func GetFeaturesFromTasks(tasks []*Task) features.FeatureSet {

func InspectTasks(taskList []*Task, proj *project.Project) (s string) {
for _, task := range taskList {
s += fmt.Sprintf("Task %s (%s)\n", task.name, task.header)
s += fmt.Sprintf("Task %s (%s)\n", task.Name, task.header)
if task.feature.Name != "" {
s += fmt.Sprintf(" Provides: %s\n", task.feature)
}
if task.requiredTask != "" {
s += fmt.Sprintf(" Requires: %s\n", task.requiredTask)
if task.RequiredTask != "" {
s += fmt.Sprintf(" Requires: %s\n", task.RequiredTask)
}
for _, action := range task.actions {
s += fmt.Sprintf(" Action: %T %+v\n", action, action)
Expand Down
10 changes: 5 additions & 5 deletions pkg/tasks/task_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import (
// Run accepts a list of tasks and check for their requirements and runs them if their conditions are met
func Run(ctx *Context, executor TaskRunner, selector TaskSelector, taskList []*Task) (success bool, err error) {
for _, task := range taskList {
if task.requiredTask != "" {
if _, present := ctx.features[task.requiredTask]; !present {
ctx.ui.TaskErrorf("You must specify a %s environment to use a %s task", task.requiredTask, task.name)
if task.RequiredTask != "" {
if _, present := ctx.features[task.RequiredTask]; !present {
ctx.ui.TaskErrorf("You must specify a %s environment to use a %s task", task.RequiredTask, task.Name)
return false, nil
}
}
Expand All @@ -25,11 +25,11 @@ func Run(ctx *Context, executor TaskRunner, selector TaskSelector, taskList []*T
return false, nil
}
if !shouldRun {
ctx.ui.TaskHeader(task.name, task.header, "disabled")
ctx.ui.TaskHeader(task.Name, task.header, "disabled")
continue
}

ctx.ui.TaskHeader(task.name, task.header, "")
ctx.ui.TaskHeader(task.Name, task.header, "")
err = executor.Run(ctx, task)
if err != nil {
ctx.ui.TaskError(err)
Expand Down
4 changes: 2 additions & 2 deletions pkg/tasks/task_runner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ func TestTaskRunner(t *testing.T) {
action2 := newTestingAction("Action 2", actionNeeded("some-reason"), actionNotNeeded(), nil)

task := &Task{
taskDefinition: &taskDefinition{name: "testtask"},
TaskDefinition: &TaskDefinition{Name: "testtask"},
actions: []taskAction{action1, action2},
}

Expand All @@ -157,7 +157,7 @@ func TestTaskRunnerWithError(t *testing.T) {
action2 := newTestingAction("Action 2", nil, nil, nil)

task := &Task{
taskDefinition: &taskDefinition{name: "testtask"},
TaskDefinition: &TaskDefinition{Name: "testtask"},
actions: []taskAction{action1, action2},
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/tasks/task_selector.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func (s *TaskSelectorImpl) ShouldRun(ctx *Context, task *Task) (bool, error) {
}

func (s *TaskSelectorImpl) osRequirementMatch(ctx *Context, task *Task) (bool, error) {
switch task.osRequirement {
switch task.OSRequirement {
case "":
break
case "debian":
Expand All @@ -43,7 +43,7 @@ func (s *TaskSelectorImpl) osRequirementMatch(ctx *Context, task *Task) (bool, e
return false, nil
}
default:
return false, fmt.Errorf("invalid value for osRequirement: %s", task.osRequirement)
return false, fmt.Errorf("invalid value for osRequirement: %s", task.OSRequirement)
}

return true, nil
Expand Down
4 changes: 2 additions & 2 deletions pkg/tasks/task_utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"testing"

"github.com/stretchr/testify/require"
"gopkg.in/yaml.v2"
yaml "gopkg.in/yaml.v2"
)

func loadTestTask(t *testing.T, payload string) (*Task, error) {
Expand All @@ -25,7 +25,7 @@ func ensureLoadTestTask(t *testing.T, payload string) *Task {
}

func dummyTask(name string) *Task {
return &Task{taskDefinition: &taskDefinition{name: name}}
return &Task{TaskDefinition: &TaskDefinition{Name: name}}
}

type taskRunnerMock struct {
Expand Down

0 comments on commit dee3f3a

Please sign in to comment.