Find git repositories within each directory

This commit is contained in:
Oliver Davies 2025-07-31 20:53:40 +01:00
parent 9560cf0f11
commit d3475bdd8c
2 changed files with 61 additions and 1 deletions

20
internal/utils/path.go Normal file
View file

@ -0,0 +1,20 @@
package utils
import (
"os"
"strings"
)
func ExpandPath(path string) (string, error) {
if strings.HasPrefix(path, "~") {
home, err := os.UserHomeDir()
if err != nil {
return "", err
}
return strings.Replace(path, "~", home, 1), nil
}
return path, nil
}

42
main.go
View file

@ -3,8 +3,11 @@ package main
import (
"fmt"
"log"
"os/exec"
"strings"
"git-repo-updater/internal/config"
"git-repo-updater/internal/utils"
)
func main() {
@ -14,5 +17,42 @@ func main() {
log.Fatalf("Failed to load config: %v", err)
}
fmt.Println("Directories:", cfg.Directories)
dirs := cfg.Directories
for _, dir := range dirs {
repositories, err := findRepositoriesInDirectory(dir)
if err != nil {
}
lines := strings.SplitSeq(repositories, "\n")
for repositoryPath := range lines {
fmt.Println(repositoryPath)
}
}
}
func findRepositoriesInDirectory(dir string) (string, error) {
expanded, err := utils.ExpandPath(dir)
if err != nil {
log.Fatal(err)
}
cmd := exec.Command("find", expanded, "-type", "d", "-name", ".git", "-mindepth", "1", "-maxdepth", "2")
output, err := cmd.CombinedOutput()
if err != nil {
if exitErr, ok := err.(*exec.ExitError); ok {
exitCode := exitErr.ExitCode()
fmt.Printf("Command failed with exit code %d\n", exitCode)
}
fmt.Printf("find failed on %s: %v\nOutput: %s\n", dir, err, string(output))
}
return string(output), nil
}