@@ -40,11 +40,23 @@ func BuildBackupProvider(conf *BackupProviderConfig) (BackupProvider, error) {
40
40
return nil , fmt .Errorf ("unknown backup provider type: %s" , conf .Type )
41
41
}
42
42
43
- func runBackupTask (conf * SyncConfig ) {
44
- for _ , target := range conf .Targets {
43
+ type SyncTask struct {
44
+ conf * SyncConfig
45
+ counter map [string ]int
46
+ }
47
+
48
+ func NewTask (conf * SyncConfig ) * SyncTask {
49
+ return & SyncTask {
50
+ conf : conf ,
51
+ counter : make (map [string ]int , 100 ),
52
+ }
53
+ }
54
+
55
+ func (t * SyncTask ) Run () {
56
+ for _ , target := range t .conf .Targets {
45
57
46
58
// merge default config
47
- target .MergeDefault (conf .DefaultConf )
59
+ target .MergeDefault (t . conf .DefaultConf )
48
60
49
61
// load all github repos
50
62
github := NewGithub (target .Token )
@@ -85,6 +97,7 @@ func runBackupTask(conf *SyncConfig) {
85
97
}
86
98
87
99
// migrate repo
100
+ delete (t .counter , repo .Name )
88
101
s , e := provider .MigrateRepo (
89
102
target .Owner , target .RepoOwner ,
90
103
target .IsOwnerOrg , target .IsRepoOwnerOrg ,
@@ -112,6 +125,12 @@ func runBackupTask(conf *SyncConfig) {
112
125
// delete unmatched repos
113
126
for _ , repo := range localRepos {
114
127
if _ , ok := handledRepos [repo ]; ! ok {
128
+ if target .Filter .PreDeleteCheckCount > 0 {
129
+ if t .counter [repo ] < target .Filter .PreDeleteCheckCount {
130
+ t .counter [repo ]++
131
+ continue
132
+ }
133
+ }
115
134
s , e := provider .DeleteRepo (target .RepoOwner , repo )
116
135
if e != nil {
117
136
log .Printf ("delete %s error: %s" , repo , e .Error ())
@@ -143,16 +162,15 @@ func main() {
143
162
log .Fatalf ("load config error: %s" , err .Error ())
144
163
}
145
164
165
+ syncTask := NewTask (conf )
146
166
if conf .Cron != "" {
147
167
task := cron .New ()
148
- _ , e := task .AddFunc (conf .Cron , func () {
149
- runBackupTask (conf )
150
- })
168
+ _ , e := task .AddFunc (conf .Cron , syncTask .Run )
151
169
if e != nil {
152
170
log .Fatalf ("add cron task error: %s" , e .Error ())
153
171
}
154
172
task .Run ()
155
173
} else {
156
- runBackupTask ( conf )
174
+ syncTask . Run ( )
157
175
}
158
176
}
0 commit comments