🎨 清理未引用资源 支持跟随 assets 文件夹符号链接 Fix https://github.com/siyuan-note/siyuan/issues/5480

This commit is contained in:
Liang Ding 2022-07-23 17:41:47 +08:00
parent 09dcdab51e
commit a7b43cbd22
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -618,18 +618,26 @@ func UnusedAssets() (ret []string) {
delete(assetsPathMap, toRemove)
}
dataAssetsAbsPath, err := getDataAssetsAbsPath()
if nil != err {
return
}
for _, assetAbsPath := range assetsPathMap {
if _, ok := linkDestMap[assetAbsPath]; ok {
continue
}
var p string
if strings.HasPrefix(filepath.Join(util.DataDir, "assets"), assetAbsPath) {
if strings.HasPrefix(dataAssetsAbsPath, assetAbsPath) {
p = assetAbsPath[strings.Index(assetAbsPath, "assets"):]
} else {
p = strings.TrimPrefix(assetAbsPath, util.DataDir)[1:]
p = strings.TrimPrefix(assetAbsPath, filepath.Dir(dataAssetsAbsPath))
}
p = filepath.ToSlash(p)
if strings.HasPrefix(p, "/") {
p = p[1:]
}
ret = append(ret, p)
}
sort.Strings(ret)
@ -737,10 +745,14 @@ func allAssetAbsPaths() (assetsAbsPathMap map[string]string, err error) {
return nil
})
}
// 全局 assets
assets := filepath.Join(util.DataDir, "assets")
filepath.Walk(assets, func(assetPath string, info fs.FileInfo, err error) error {
if assets == assetPath {
dataAssetsAbsPath, err := getDataAssetsAbsPath()
if nil != err {
return
}
filepath.Walk(dataAssetsAbsPath, func(assetPath string, info fs.FileInfo, err error) error {
if dataAssetsAbsPath == assetPath {
return nil
}
@ -806,3 +818,20 @@ func copyAssetsToDataAssets(rootPath string) {
}
}
}
func getDataAssetsAbsPath() (ret string, err error) {
ret = filepath.Join(util.DataDir, "assets")
stat, statErr := os.Lstat(ret)
if nil != statErr {
err = statErr
return
}
if 0 != stat.Mode()&os.ModeSymlink {
// 跟随符号链接 https://github.com/siyuan-note/siyuan/issues/5480
ret, err = os.Readlink(ret)
if nil != err {
return
}
}
return
}