diff options
| author | Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com> | 2018-11-15 01:11:31 +0300 |
|---|---|---|
| committer | Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com> | 2018-11-15 01:11:31 +0300 |
| commit | 0368933e04a1fe040c2f328a1557084283ebf188 (patch) | |
| tree | 76d5b664a6cefdc0736007baed33539ddb600451 /main.go | |
| parent | init. (diff) | |
| download | gitbatch-0368933e04a1fe040c2f328a1557084283ebf188.tar.gz | |
iterating
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 66 |
1 files changed, 42 insertions, 24 deletions
@@ -1,39 +1,57 @@ package main import ( -// "io/ioutil" + "io/ioutil" "log" - "os" "os/exec" + "syscall" ) func main() { - repo := "/home/isacikgoz/git/gitbatch/" - argstr := []string{ "-C", repo, "status"} + repo := "/Users/ibrahim/git" + FindRepos(repo) +} + +func FindRepos(directory string) []string { + var gitRepositories []string + files, err := ioutil.ReadDir(directory) - out, err := exec.Command("git", argstr...).Output() if err != nil { log.Fatal(err) - os.Exit(1) } - log.Println(string(out)) - -// files, err := ioutil.ReadDir("/home/isacikgoz/git") -// if err != nil { -// log.Fatal(err) -// } -// -// for _, f := range files { -// log.Println(f.Name()) -// } + + for _, f := range files { + if IsRepo((directory + "/" + f.Name())) == true { + log.Println(f.Name() + " is a git repository") + } + } + return gitRepositories } -//func FindGitRepositories(directory string) []string, err { -// []string gitRepositories -// files, err := ioutil.ReadDir(directory) -// for _, f := range files { -// log.Println(f.Name()) -// } -// return files, err -//} +func IsRepo(directory string) bool { + + argstr := []string{ "-C", directory, "status"} + + cmd := exec.Command("git", argstr...) + + if err := cmd.Start(); err != nil { + log.Fatalf("cmd.Start: %v") + } + + if err := cmd.Wait(); err != nil { + if exiterr, ok := err.(*exec.ExitError); ok { + // The program has exited with an exit code != 0 + + // Do nothing + if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { + log.Printf(directory + " is not a git repository, git command return code: %d", status.ExitStatus()) + } + } else { + log.Fatalf("cmd.Wait: %v", err) + } + } else { + return true + } + return false +} |
