self_check.go 737 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. Name: task.Name,
  17. Description: task.Description,
  18. Fixable: task.FixFunc != nil,
  19. Err: cErr,
  20. Status: status,
  21. })
  22. }
  23. return
  24. }
  25. func AttemptFix(taskName string) (err error) {
  26. task, ok := selfCheckTaskMap.Get(taskName)
  27. if !ok {
  28. return ErrTaskNotFound
  29. }
  30. if task.FixFunc == nil {
  31. return ErrTaskNotFixable
  32. }
  33. return task.FixFunc()
  34. }