兼容单文件处理

This commit is contained in:
algotao
2025-06-07 19:15:23 +08:00
parent b8c2a3a7d4
commit d1ad148725

View File

@@ -81,7 +81,7 @@ func RunTaskMake(args ...string) error {
return nil
}
makeTaskParams := makeTaskParams{
makeTaskParams := &makeTaskParams{
sourcePath: *sourcePath,
hashFile: *hashFile,
task: &saasapi.Task{
@@ -91,10 +91,10 @@ func RunTaskMake(args ...string) error {
DataspaceId: *ds,
},
}
return doMakeHash(makeTaskParams)
return doMakeHash(makeTaskParams, true)
}
func doMakeHash(makeTaskParams makeTaskParams) error {
func doMakeHash(makeTaskParams *makeTaskParams, firstLevel bool) error {
fsInfo, err := os.Stat(makeTaskParams.sourcePath)
if err != nil {
return err
@@ -102,29 +102,36 @@ func doMakeHash(makeTaskParams makeTaskParams) error {
if !fsInfo.IsDir() {
// 如果是文件,直接计算
return doTaskMake(makeTaskParams)
}
// 读取目录下信息
dirEntry, err := os.ReadDir(makeTaskParams.sourcePath)
if err != nil {
return err
}
// 遍历目录
for _, dir := range dirEntry {
newParam := makeTaskParams
newParam.sourcePath = path.Join(makeTaskParams.sourcePath, dir.Name())
if err = doMakeHash(newParam); err != nil {
err = doTaskMake(makeTaskParams)
if err != nil {
return err
}
} else {
// 读取目录下信息
dirEntry, err := os.ReadDir(makeTaskParams.sourcePath)
if err != nil {
return err
}
// 遍历目录
for _, dir := range dirEntry {
oldSourcePath := makeTaskParams.sourcePath
makeTaskParams.sourcePath = path.Join(makeTaskParams.sourcePath, dir.Name())
if err = doMakeHash(makeTaskParams, false); err != nil {
return err
}
makeTaskParams.sourcePath = oldSourcePath
}
}
return saveTaskFile(makeTaskParams)
if firstLevel {
return saveTaskFile(makeTaskParams)
}
return nil
}
func doTaskMake(makeTaskParams makeTaskParams) error {
func doTaskMake(makeTaskParams *makeTaskParams) error {
sourceFile, err := os.Open(makeTaskParams.sourcePath)
if err != nil {
return err
@@ -227,7 +234,7 @@ func hashWorker(tasks <-chan *hashTask, results chan<- *hashTask) {
}
}
func saveTaskFile(makeTaskParams makeTaskParams) error {
func saveTaskFile(makeTaskParams *makeTaskParams) error {
taskFile, err := os.Create(makeTaskParams.hashFile)
if err != nil {
return err