Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-09-29 17:16:47 +08:00
commit eb03fbb11c
2 changed files with 61 additions and 11 deletions

View file

@ -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") ||

View file

@ -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) {