self_check.go 763 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package self_check
  2. import (
  3. "errors"
  4. "github.com/uozi-tech/cosy"
  5. )
  6. func Run() (reports Reports) {
  7. reports = make(Reports, 0)
  8. for _, task := range selfCheckTasks {
  9. var cErr *cosy.Error
  10. status := ReportStatusSuccess
  11. if err := task.CheckFunc(); err != nil {
  12. errors.As(err, &cErr)
  13. status = ReportStatusError
  14. }
  15. reports = append(reports, &Report{
  16. Key: task.Key,
  17. Name: task.Name,
  18. Description: task.Description,
  19. Fixable: task.FixFunc != nil,
  20. Err: cErr,
  21. Status: status,
  22. })
  23. }
  24. return
  25. }
  26. func AttemptFix(taskName string) (err error) {
  27. task, ok := selfCheckTaskMap.Get(taskName)
  28. if !ok {
  29. return ErrTaskNotFound
  30. }
  31. if task.FixFunc == nil {
  32. return ErrTaskNotFixable
  33. }
  34. return task.FixFunc()
  35. }