Loading juggler.go 0 → 100644 +60 −0 Original line number Diff line number Diff line package juggler import ( "os" "path/filepath" ) // GitDirectoryPath contains the path of a .git directory. type GitDirectoryPath struct { rootPath string } // NewGitDirectoryPath ... func NewGitDirectoryPath(rootPath string) *GitDirectoryPath { return &GitDirectoryPath{ rootPath: rootPath, } } // Walk ... func (g *GitDirectoryPath) Walk(done <-chan bool) (chan<- string, error) { pathStream := make(chan string) defer close(pathStream) if err := filepath.Walk(g.rootPath, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() { return nil } if info.Name() != ".git" { return nil } pathStream <- path return nil }); err != nil { return nil, err } return pathStream, nil } // GitDirectory returns all .git directories below a given rootPath. func GitDirectory(done <-chan bool, rootPath string) <-chan string { gitDirectoryStream := make(chan string) go func() { defer close(gitDirectoryStream) for { select { case <-done: return //case gitDirectoryStream <- } } }() return gitDirectoryStream } juggler_test.go 0 → 100644 +48 −0 Original line number Diff line number Diff line package juggler import ( "os" "os/user" "path" "path/filepath" "testing" ) func TestJugglerSearchProjects(t *testing.T) { //basePath := "/home/MUEHMER/bsmr/repositories" basePath := "repositories" usr, err := user.Current() if err != nil { t.Fatalf("user.Current() failed: %s", err) } dirPath := path.Join(usr.HomeDir, basePath) err = filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() { return nil } if info.Name() != ".git" { return nil } t.Logf("path: %s", path) return nil }) if err != nil { t.Fatalf("filepath.Walk() failed: %s", err) } } func TestJugglerProcessProjectsSequential(t *testing.T) { } func TestJugglerProcessProjectsParallel(t *testing.T) { } Loading
juggler.go 0 → 100644 +60 −0 Original line number Diff line number Diff line package juggler import ( "os" "path/filepath" ) // GitDirectoryPath contains the path of a .git directory. type GitDirectoryPath struct { rootPath string } // NewGitDirectoryPath ... func NewGitDirectoryPath(rootPath string) *GitDirectoryPath { return &GitDirectoryPath{ rootPath: rootPath, } } // Walk ... func (g *GitDirectoryPath) Walk(done <-chan bool) (chan<- string, error) { pathStream := make(chan string) defer close(pathStream) if err := filepath.Walk(g.rootPath, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() { return nil } if info.Name() != ".git" { return nil } pathStream <- path return nil }); err != nil { return nil, err } return pathStream, nil } // GitDirectory returns all .git directories below a given rootPath. func GitDirectory(done <-chan bool, rootPath string) <-chan string { gitDirectoryStream := make(chan string) go func() { defer close(gitDirectoryStream) for { select { case <-done: return //case gitDirectoryStream <- } } }() return gitDirectoryStream }
juggler_test.go 0 → 100644 +48 −0 Original line number Diff line number Diff line package juggler import ( "os" "os/user" "path" "path/filepath" "testing" ) func TestJugglerSearchProjects(t *testing.T) { //basePath := "/home/MUEHMER/bsmr/repositories" basePath := "repositories" usr, err := user.Current() if err != nil { t.Fatalf("user.Current() failed: %s", err) } dirPath := path.Join(usr.HomeDir, basePath) err = filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() { return nil } if info.Name() != ".git" { return nil } t.Logf("path: %s", path) return nil }) if err != nil { t.Fatalf("filepath.Walk() failed: %s", err) } } func TestJugglerProcessProjectsSequential(t *testing.T) { } func TestJugglerProcessProjectsParallel(t *testing.T) { }