MCPcopy Create free account
hub / github.com/SolarLune/masterplan / AutoBackup

Method AutoBackup

project.go:182–234  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

180}
181
182func (project *Project) AutoBackup() {
183
184 if globals.ReleaseMode != ReleaseModeDemo && project.Filepath != "" && globals.Settings.Get(SettingsAutoBackup).AsBool() && time.Since(project.LastBackup) > time.Duration(globals.Settings.Get(SettingsAutoBackupTime).AsFloat())*time.Minute {
185
186 filename := project.Filepath
187 if strings.Contains(filename, ".plan"+BackupDelineator) {
188 filename = filename[:strings.Index(filename, ".plan")] + ".plan" + BackupDelineator + time.Now().Format(FileTimeFormat)
189 } else {
190 filename += BackupDelineator + time.Now().Format(FileTimeFormat)
191 }
192
193 ogFilepath := project.Filepath
194 project.Filepath = filename
195 project.BackingUp = true
196 project.Save()
197 project.BackingUp = false
198 project.LastBackup = time.Now()
199 project.Filepath = ogFilepath
200
201 head := filepath.Base(filename)
202 if !strings.Contains(head, ".plan"+BackupDelineator) {
203 head += BackupDelineator
204 } else {
205 ind := strings.Index(head, ".plan"+BackupDelineator)
206 head = head[:ind] + ".plan" + BackupDelineator
207 }
208
209 existingBackups := FilesInDirectory(filepath.Dir(project.Filepath), head)
210
211 maxBackups := int(globals.Settings.Get(SettingsMaxAutoBackups).AsFloat())
212
213 if len(existingBackups) > maxBackups {
214
215 deleteCount := len(existingBackups) - maxBackups
216 for i := 0; i < deleteCount; i++ {
217
218 if existingBackups[0] != ogFilepath {
219
220 if err := os.Remove(existingBackups[0]); err != nil {
221 log.Println("ERROR: Couldn't delete existing backups: ", err.Error())
222 }
223
224 }
225
226 existingBackups = existingBackups[1:]
227
228 }
229
230 }
231
232 }
233
234}
235
236func (project *Project) Update() {
237

Callers 1

UpdateMethod · 0.95

Calls 8

SaveMethod · 0.95
FilesInDirectoryFunction · 0.85
AsBoolMethod · 0.80
AsFloatMethod · 0.80
GetMethod · 0.45
ContainsMethod · 0.45
IndexMethod · 0.45
RemoveMethod · 0.45

Tested by

no test coverage detected