github.com/beauknowssoftware/makehcl@v0.0.0-20200322000747-1b9bb1e1c008/internal/definition/definition.go (about) 1 package definition 2 3 type Goal = []string 4 type Target = string 5 6 type Definition struct { 7 defaultGoal Goal 8 rules map[Target]*Rule 9 firstExecutorGoal Goal 10 GlobalEnvironment map[string]string 11 Shell string 12 ShellFlags *string 13 } 14 15 func (d Definition) Rule(t Target) *Rule { 16 if d.rules == nil { 17 return nil 18 } 19 20 return d.rules[t] 21 } 22 23 func (d *Definition) SetDefaultGoal(goal Goal) { 24 d.defaultGoal = goal 25 } 26 27 func (d *Definition) AddRule(r *Rule) { 28 if d.rules == nil { 29 d.rules = make(map[Target]*Rule) 30 } 31 32 d.rules[r.Target] = r 33 34 if len(d.firstExecutorGoal) == 0 { 35 d.firstExecutorGoal = Goal{r.Target} 36 } 37 } 38 39 func (d *Definition) AddCommand(c *Command) { 40 d.AddRule(c.AsRule()) 41 } 42 43 func (d Definition) Rules() map[Target]*Rule { 44 return d.rules 45 } 46 47 func (d *Definition) EffectiveGoal(explicitGoal Goal) Goal { 48 if len(explicitGoal) == 0 { 49 if len(d.defaultGoal) == 0 { 50 return d.firstExecutorGoal 51 } 52 53 return d.defaultGoal 54 } 55 56 return explicitGoal 57 }