mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 14:40:12 +01:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
eb03fbb11c
2 changed files with 61 additions and 11 deletions
|
|
@ -383,6 +383,24 @@
|
|||
}
|
||||
const initPath = result.filePaths[0]
|
||||
|
||||
if (isPartitionRootPath(initPath)) {
|
||||
let msg = '⚠️ Do not create the workspace in the partition root path, please create a new folder as the workspace'
|
||||
if (isChinese(currentLang)) {
|
||||
msg = '⚠️ 请勿在分区根路径上创建工作空间,请新建一个文件夹作为工作空间'
|
||||
}
|
||||
alert(msg)
|
||||
return
|
||||
}
|
||||
|
||||
if (!isWorkspaceDir(initPath) && !isEmptyDir(initPath)) {
|
||||
let msg = '⚠️ This folder contains other files, please create a new folder as the workspace'
|
||||
if (isChinese(currentLang)) {
|
||||
msg = '⚠️ 该文件夹包含了其他文件,请新建一个文件夹作为工作空间'
|
||||
}
|
||||
alert(msg)
|
||||
return
|
||||
}
|
||||
|
||||
if (isICloudPath(initPath)) {
|
||||
let msg = '⚠️ This folder is under the iCloud sync path, please change another path'
|
||||
if (isChinese(currentLang)) {
|
||||
|
|
@ -417,6 +435,36 @@
|
|||
})
|
||||
})
|
||||
|
||||
const isPartitionRootPath = (absPath) => {
|
||||
const path = require('path')
|
||||
const parsedPath = path.parse(absPath)
|
||||
return parsedPath.root === absPath
|
||||
}
|
||||
|
||||
const isEmptyDir = (absPath) => {
|
||||
const fs = require('fs')
|
||||
let files;
|
||||
try {
|
||||
files = fs.readdirSync(absPath)
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
return 0 === files.length
|
||||
}
|
||||
|
||||
const isWorkspaceDir = (absPath) => {
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const conf = path.join(absPath, 'conf', 'conf.json');
|
||||
let data;
|
||||
try {
|
||||
data = fs.readFileSync(conf, 'utf8');
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
return data.includes('kernelVersion');
|
||||
}
|
||||
|
||||
const isCloudDrivePath = (absPath) => {
|
||||
const absPathLower = absPath.toLowerCase()
|
||||
return -1 < absPathLower.indexOf("onedrive") || -1 < absPathLower.indexOf("dropbox") ||
|
||||
|
|
|
|||
|
|
@ -52,17 +52,19 @@ func checkWorkspaceDir(c *gin.Context) {
|
|||
}
|
||||
|
||||
// 检查路径是否包含其他文件
|
||||
entries, err := os.ReadDir(path)
|
||||
if err != nil {
|
||||
ret.Code = -1
|
||||
ret.Msg = fmt.Sprintf("read dir [%s] failed: %s", path, err)
|
||||
return
|
||||
}
|
||||
if 0 < len(entries) {
|
||||
ret.Code = -1
|
||||
ret.Msg = model.Conf.Language(274)
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 7000}
|
||||
return
|
||||
if !util.IsWorkspaceDir(path) {
|
||||
entries, err := os.ReadDir(path)
|
||||
if err != nil {
|
||||
ret.Code = -1
|
||||
ret.Msg = fmt.Sprintf("read dir [%s] failed: %s", path, err)
|
||||
return
|
||||
}
|
||||
if 0 < len(entries) {
|
||||
ret.Code = -1
|
||||
ret.Msg = model.Conf.Language(274)
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 7000}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if isInvalidWorkspacePath(path) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue