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  }