1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
diff --git a/main.go b/main.go
index 8bd5def46b511ba0cab9a77d0c73e52f3a2c853d..148dbd1353c1b8fcd95dc4dba1aabf8364ecfc43 100644
--- a/main.go
+++ b/main.go
@@ -61,31 +61,33 @@ go func() {
for {
slog.Debug("running sync...")
for _, r := range config.Repos {
-
- // Check if we need to clone first
- repoPath := filepath.Join(config.Storage, r.Name)
- _, err := os.Stat(repoPath)
- if err != nil {
- if errors.Is(err, os.ErrNotExist) {
- if err := git(config.Storage, "clone", "--mirror", r.Source, r.Name); err != nil {
- slog.Error("could not clone repo", slog.String("repo", r.Source), slog.Any("err", err))
+ go func(r RepoConfig) {
+ // Check if we need to clone first
+ repoPath := filepath.Join(config.Storage, r.Name)
+ _, err := os.Stat(repoPath)
+ if err != nil {
+ if errors.Is(err, os.ErrNotExist) {
+ if err := git(config.Storage, "clone", "--mirror", r.Source, r.Name); err != nil {
+ slog.Error("could not clone repo", slog.String("repo", r.Source), slog.Any("err", err))
+ }
+ } else {
+ slog.Error("could not stat repo path", slog.Any("err", err))
}
- } else {
- slog.Error("could not stat repo path", slog.Any("err", err))
}
- }
- // Update from remote
- if err := git(repoPath, "remote", "update", "--prune"); err != nil {
- slog.Error("could not update repo", slog.String("repo", r.Source), slog.Any("err", err))
- }
+ // Update from remote
+ if err := git(repoPath, "remote", "update", "--prune"); err != nil {
+ slog.Error("could not update repo", slog.String("repo", r.Source), slog.Any("err", err))
+ }
- // Push
- for _, dest := range r.Dest {
- if err := git(repoPath, "push", "--mirror", "--force", dest); err != nil {
- slog.Error("could not push repo", slog.String("repo", r.Source), slog.String("dest", dest), slog.Any("err", err))
+ // Push
+ for _, dest := range r.Dest {
+ slog.Debug("syncing repo", slog.String("repo", r.Source), slog.String("dest", dest))
+ if err := git(repoPath, "push", "--mirror", "--force", dest); err != nil {
+ slog.Error("could not push repo", slog.String("repo", r.Source), slog.String("dest", dest), slog.Any("err", err))
+ }
}
- }
+ }(r)
}
<-ticker.C
}
|