1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| package vault
|
| import (
| "os"
| "path/filepath"
| "strings"
| )
|
| // ScanVault 扫描知识库目录,返回所有 markdown 文件的元数据
| func ScanVault(vaultPath string) ([]*FileMeta, error) {
| var files []*FileMeta
|
| err := filepath.Walk(vaultPath, func(path string, info os.FileInfo, err error) error {
| if err != nil {
| return nil // 跳过错误文件
| }
| if info.IsDir() {
| // 跳过隐藏目录
| if strings.HasPrefix(info.Name(), ".") && info.Name() != "." {
| return filepath.SkipDir
| }
| return nil
| }
| if !strings.HasSuffix(path, ".md") {
| return nil
| }
|
| relPath, _ := filepath.Rel(vaultPath, path)
| meta, err := ParseFile(path, relPath)
| if err != nil {
| return nil // 跳过解析失败的文件
| }
| files = append(files, meta)
| return nil
| })
|
| return files, err
| }
|
|