(err error)
| 482 | } |
| 483 | |
| 484 | func resolveExitCode(err error) { |
| 485 | ctx := context.Background() |
| 486 | ci := fs.GetConfig(ctx) |
| 487 | atexit.Run() |
| 488 | if err == nil { |
| 489 | if ci.ErrorOnNoTransfer { |
| 490 | if accounting.GlobalStats().GetTransfers() == 0 { |
| 491 | os.Exit(exitcode.NoFilesTransferred) |
| 492 | } |
| 493 | } |
| 494 | os.Exit(exitcode.Success) |
| 495 | } |
| 496 | |
| 497 | switch { |
| 498 | case errors.Is(err, fs.ErrorDirNotFound): |
| 499 | os.Exit(exitcode.DirNotFound) |
| 500 | case errors.Is(err, fs.ErrorObjectNotFound): |
| 501 | os.Exit(exitcode.FileNotFound) |
| 502 | case errors.Is(err, accounting.ErrorMaxTransferLimitReached): |
| 503 | os.Exit(exitcode.TransferExceeded) |
| 504 | case errors.Is(err, fssync.ErrorMaxDurationReached): |
| 505 | os.Exit(exitcode.DurationExceeded) |
| 506 | case fserrors.ShouldRetry(err): |
| 507 | os.Exit(exitcode.RetryError) |
| 508 | case fserrors.IsNoRetryError(err), fserrors.IsNoLowLevelRetryError(err): |
| 509 | os.Exit(exitcode.NoRetryError) |
| 510 | case fserrors.IsFatalError(err): |
| 511 | os.Exit(exitcode.FatalError) |
| 512 | case errors.Is(err, errorCommandNotFound), errors.Is(err, errorNotEnoughArguments), errors.Is(err, errorTooManyArguments): |
| 513 | os.Exit(exitcode.UsageError) |
| 514 | default: |
| 515 | os.Exit(exitcode.UncategorizedError) |
| 516 | } |
| 517 | } |
| 518 | |
| 519 | var backendFlags map[string]struct{} |
| 520 |
no test coverage detected
searching dependent graphs…