From d1ad1487251344d823f9d8ee916a4a595e0d4c7e Mon Sep 17 00:00:00 2001 From: algotao Date: Sat, 7 Jun 2025 19:15:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=8D=95=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/saastool/task_make.go | 49 ++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/cmd/saastool/task_make.go b/cmd/saastool/task_make.go index d483350..87487f5 100644 --- a/cmd/saastool/task_make.go +++ b/cmd/saastool/task_make.go @@ -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