summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go66
1 files changed, 42 insertions, 24 deletions
diff --git a/main.go b/main.go
index e08022c..99dd21d 100644
--- a/main.go
+++ b/main.go
@@ -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
+}