• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Sora233 / DDBOT / 5182259991

pending completion
5182259991

Pull #236

github

web-flow
Bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3

Bumps [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus) from 1.9.2 to 1.9.3.
- [Release notes](https://github.com/sirupsen/logrus/releases)
- [Changelog](https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sirupsen/logrus/compare/v1.9.2...v1.9.3)

---
updated-dependencies:
- dependency-name: github.com/sirupsen/logrus
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Pull Request #236: Bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3

8679 of 21625 relevant lines covered (40.13%)

0.45 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

64.38
/lsp/template/loader.go
1
package template
2

3
import (
4
        "embed"
5
        "fmt"
6
        "github.com/Sora233/DDBOT/lsp/mmsg"
7
        "github.com/fsnotify/fsnotify"
8
        "os"
9
        "path/filepath"
10
        "strings"
11
        "sync"
12
)
13

14
const templateDir = "template"
15

16
var rootT = New("root")
17
var mu sync.RWMutex
18

19
//go:embed default/*.tmpl
20
var tfs embed.FS
21

22
var once sync.Once
23
var watcher *fsnotify.Watcher
24

25
func initRootT() {
1✔
26
        once.Do(func() {
2✔
27
                mu.Lock()
1✔
28
                rootT = Must(rootT.ParseFS(tfs, "default/*.tmpl"))
1✔
29
                mu.Unlock()
1✔
30
        })
1✔
31
}
32

33
func InitTemplateLoader() {
1✔
34
        var err error
1✔
35
        initRootT()
1✔
36
        watcher, err = fsnotify.NewWatcher()
1✔
37
        if err != nil {
1✔
38
                panic(err)
×
39
        }
40
        if _, err := os.Stat(templateDir); err != nil {
2✔
41
                if os.IsNotExist(err) {
2✔
42
                        logger.Infof("监测到<%v>目录不存在,将自动创建,请将所有自定义模板放在<%v>文件夹内", templateDir, templateDir)
1✔
43
                        os.Mkdir(templateDir, 0766)
1✔
44
                } else {
1✔
45
                        logger.Errorf("监测<%v>目录失败:%v", templateDir, err)
×
46
                        return
×
47
                }
×
48
        }
49
        if err := watcher.Add(templateDir); err != nil {
1✔
50
                logger.Errorf("监测<%v>文件夹失败,自定义模板可能无法生效: %v", templateDir, err)
×
51
                return
×
52
        }
×
53
        parseExternalTemplate := func() {
2✔
54
                if _, err := rootT.ParseGlob(filepath.Join(templateDir, "*.tmpl")); err != nil {
2✔
55
                        if err == ErrGlobNotMatch {
2✔
56
                                logger.Infof(`没有发现模板文件,注意模板必须以".tmpl"结尾`)
1✔
57
                        } else {
1✔
58
                                logger.Errorf("解析模板错误:%v", err)
×
59
                        }
×
60
                }
61
        }
62
        parseExternalTemplate()
1✔
63
        go func() {
2✔
64
                for {
2✔
65
                        select {
1✔
66
                        case event, ok := <-watcher.Events:
1✔
67
                                if !ok {
2✔
68
                                        return
1✔
69
                                }
1✔
70
                                if !strings.HasSuffix(event.Name, "tmpl") {
×
71
                                        continue
×
72
                                }
73
                                logger.Infof("监测到%v文件变动: %v", templateDir, event.String())
×
74
                                mu.Lock()
×
75
                                rootT = Must(rootT.ParseFS(tfs, "default/*.tmpl"))
×
76
                                parseExternalTemplate()
×
77
                                mu.Unlock()
×
78
                        case err, ok := <-watcher.Errors:
×
79
                                if !ok {
×
80
                                        return
×
81
                                }
×
82
                                logger.Errorf("监测template发生错误: %v", err)
×
83
                        }
84
                }
85
        }()
86
}
87

88
func Close() {
1✔
89
        if watcher != nil {
2✔
90
                watcher.Close()
1✔
91
        }
1✔
92
}
93

94
func LoadTemplate(name string) *Template {
1✔
95
        initRootT()
1✔
96
        mu.RLock()
1✔
97
        defer mu.RUnlock()
1✔
98
        return rootT.Lookup(name)
1✔
99
}
1✔
100

101
func LoadAndExec(name string, data interface{}) (*mmsg.MSG, error) {
1✔
102
        initRootT()
1✔
103
        m := mmsg.NewMSG()
1✔
104
        t := LoadTemplate(name)
1✔
105
        if t == nil {
1✔
106
                return nil, fmt.Errorf("<!missing template %v>", name)
×
107
        }
×
108
        if err := t.Execute(m, data); err != nil {
1✔
109
                logger.WithField("data", data).Errorf("template: %v execute error: %v", name, err)
×
110
                return nil, err
×
111
        }
×
112
        return m, nil
1✔
113
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc