stderr.go 876 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package deprecated
  2. import (
  3. "os"
  4. "strconv"
  5. "github.com/sagernet/sing/common/logger"
  6. )
  7. type stderrManager struct {
  8. logger logger.Logger
  9. reported map[string]bool
  10. }
  11. func NewStderrManager(logger logger.Logger) Manager {
  12. return &stderrManager{
  13. logger: logger,
  14. reported: make(map[string]bool),
  15. }
  16. }
  17. func (f *stderrManager) ReportDeprecated(feature Note) {
  18. if f.reported[feature.Name] {
  19. return
  20. }
  21. f.reported[feature.Name] = true
  22. if !feature.Impending() {
  23. f.logger.Warn(feature.MessageWithLink())
  24. return
  25. }
  26. enable, enableErr := strconv.ParseBool(os.Getenv("ENABLE_DEPRECATED_" + feature.EnvName))
  27. if enableErr == nil && enable {
  28. f.logger.Warn(feature.MessageWithLink())
  29. return
  30. }
  31. f.logger.Error(feature.MessageWithLink())
  32. f.logger.Fatal("to continuing using this feature, set environment variable ENABLE_DEPRECATED_" + feature.EnvName + "=true")
  33. }