(prunableObjects []string, logger *tasklog.Logger)
| 342 | } |
| 343 | |
| 344 | func pruneDeleteFiles(prunableObjects []string, logger *tasklog.Logger) { |
| 345 | task := logger.Percentage(tr.Tr.Get("Deleting objects"), uint64(len(prunableObjects))) |
| 346 | defer task.Complete() |
| 347 | |
| 348 | var problems bytes.Buffer |
| 349 | // In case we fail to delete some |
| 350 | var deletedFiles int |
| 351 | for _, oid := range prunableObjects { |
| 352 | mediaFile, err := cfg.Filesystem().ObjectPath(oid) |
| 353 | if err != nil { |
| 354 | problems.WriteString(tr.Tr.Get("Unable to find media path for %v: %v", oid, err)) |
| 355 | problems.WriteRune('\n') |
| 356 | continue |
| 357 | } |
| 358 | if mediaFile == os.DevNull { |
| 359 | continue |
| 360 | } |
| 361 | err = os.Remove(mediaFile) |
| 362 | if err != nil { |
| 363 | problems.WriteString(tr.Tr.Get("Failed to remove file %v: %v", mediaFile, err)) |
| 364 | problems.WriteRune('\n') |
| 365 | continue |
| 366 | } |
| 367 | deletedFiles++ |
| 368 | task.Count(1) |
| 369 | } |
| 370 | if problems.Len() > 0 { |
| 371 | LoggedError(errors.New(tr.Tr.Get("failed to delete some files")), problems.String()) |
| 372 | Exit(tr.Tr.Get("Prune failed, see errors above")) |
| 373 | } |
| 374 | } |
| 375 | |
| 376 | // Background task, must call waitg.Done() once at end |
| 377 | func pruneTaskGetLocalObjects(outLocalObjects *[]fs.Object, progChan PruneProgressChan, waitg *sync.WaitGroup) { |
no test coverage detected