Commit 6146b93b authored by Boris Mühmer's avatar Boris Mühmer
Browse files

added juggler

parent 1787fd85
Loading
Loading
Loading
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) {

}