MCPcopy Index your code
hub / github.com/idank/explainshell / loadBasenames

Method loadBasenames

prod/botshed/module.go:80–119  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

78}
79
80func (b *Botshed) loadBasenames() {
81 if b.DBPath == "" {
82 b.logger.Warn("botshed: db_path empty, basename detector disabled")
83 return
84 }
85 dsn := fmt.Sprintf("file:%s?mode=ro&immutable=1", b.DBPath)
86 db, err := sql.Open("sqlite", dsn)
87 if err != nil {
88 b.logger.Error("botshed: open db failed", zap.Error(err))
89 return
90 }
91 defer db.Close()
92
93 rows, err := db.Query("SELECT source FROM manpages")
94 if err != nil {
95 b.logger.Error("botshed: query manpages failed", zap.Error(err))
96 return
97 }
98 defer rows.Close()
99
100 m := make(map[string]struct{}, 50000)
101 for rows.Next() {
102 var src string
103 if err := rows.Scan(&src); err != nil {
104 b.logger.Error("botshed: scan row failed", zap.Error(err))
105 return
106 }
107 base := filepath.Base(src)
108 base = strings.TrimSuffix(base, ".gz")
109 if base != "" {
110 m[base] = struct{}{}
111 }
112 }
113 if err := rows.Err(); err != nil {
114 b.logger.Error("botshed: rows iter failed", zap.Error(err))
115 return
116 }
117 b.basenames.Store(&m)
118 b.logger.Info("botshed: loaded basenames", zap.Int("count", len(m)))
119}
120
121func (b *Botshed) loadCanned() {
122 if b.Upstream == "" {

Callers 1

ProvisionMethod · 0.95

Calls 1

makeFunction · 0.85

Tested by

no test coverage detected