github.com/masahide/goansible@v0.0.0-20160116054156-01eac649e9f2/path.go (about) 1 package goansible 2 3 import ( 4 "path/filepath" 5 "strings" 6 ) 7 8 type Paths interface { 9 Base() string 10 Role(name string) string 11 Vars(name string) string 12 Task(name string) string 13 Handler(name string) string 14 File(name string) string 15 TemplateFile(name string) string 16 Meta(name string) string 17 } 18 19 type SimplePath struct { 20 Root string 21 } 22 23 func (s SimplePath) Base() string { 24 return s.Root 25 } 26 27 func (s SimplePath) Role(name string) string { 28 return filepath.Join(s.Root, "roles", name) 29 } 30 31 func (s SimplePath) Vars(name string) string { 32 return filepath.Join(s.Root, name) 33 } 34 35 func (s SimplePath) Task(name string) string { 36 return filepath.Join(s.Root, name) 37 } 38 39 func (s SimplePath) Handler(name string) string { 40 return filepath.Join(s.Root, name) 41 } 42 43 func (s SimplePath) File(name string) string { 44 if strings.HasPrefix(name, "/") { 45 return name 46 } 47 return filepath.Join(s.Root, name) 48 } 49 50 func (s SimplePath) TemplateFile(name string) string { 51 return filepath.Join(s.Root, name) 52 } 53 54 func (s SimplePath) Meta(name string) string { 55 return filepath.Join(s.Root, name) 56 } 57 58 type SeparatePaths struct { 59 Top string 60 Root string 61 } 62 63 func (s SeparatePaths) Base() string { 64 return s.Root 65 } 66 67 func (s SeparatePaths) Role(name string) string { 68 return filepath.Join(s.Top, "roles", name) 69 } 70 71 func (s SeparatePaths) Vars(name string) string { 72 return filepath.Join(s.Root, "vars", name) 73 } 74 75 func (s SeparatePaths) Task(name string) string { 76 return filepath.Join(s.Root, "tasks", name) 77 } 78 79 func (s SeparatePaths) Handler(name string) string { 80 return filepath.Join(s.Root, "handlers", name) 81 } 82 83 func (s SeparatePaths) File(name string) string { 84 return filepath.Join(s.Root, "files", name) 85 } 86 87 func (s SeparatePaths) TemplateFile(name string) string { 88 return filepath.Join(s.Root, "templates", name) 89 } 90 91 func (s SeparatePaths) Meta(name string) string { 92 return filepath.Join(s.Root, "meta", name) 93 }