go-serviceman/vendor/github.com/UnnoTed/fileb0x/dir/dir.go

71 lines
1.3 KiB
Go

package dir
import "strings"
// Dir holds directory information to insert into templates
type Dir struct {
List [][]string
Blacklist []string
}
// Exists checks if a directory exists or not
func (d *Dir) Exists(newDir string) bool {
for _, dir := range d.Blacklist {
if dir == newDir {
return true
}
}
return false
}
// Parse a directory to build a list of directories to be made at b0x.go
func (d *Dir) Parse(newDir string) []string {
list := strings.Split(newDir, "/")
var dirWalk []string
for indx := range list {
dirList := ""
for i := -1; i < indx; i++ {
dirList += list[i+1] + "/"
}
if !d.Exists(dirList) {
if strings.HasSuffix(dirList, "//") {
dirList = dirList[:len(dirList)-1]
}
dirWalk = append(dirWalk, dirList)
d.Blacklist = append(d.Blacklist, dirList)
}
}
return dirWalk
}
// Insert a new folder to the list
func (d *Dir) Insert(newDir string) {
if !d.Exists(newDir) {
d.Blacklist = append(d.Blacklist, newDir)
d.List = append(d.List, d.Parse(newDir))
}
}
// Clean dupes
func (d *Dir) Clean() []string {
var cleanList []string
for _, dirs := range d.List {
for _, dir := range dirs {
if dir == "./" || dir == "/" || dir == "." || dir == "" {
continue
}
cleanList = append(cleanList, dir)
}
}
return cleanList
}