JCS-pub/client/internal/cmdline/object.go

70 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package cmdline
/*
import (
"fmt"
"os"
"path/filepath"
"time"
cdssdk "gitlink.org.cn/cloudream/jcs-pub/client/types"
)
// 必须添加的命令函数,用于处理对象上传。
//
// ctx: 命令上下文,提供必要的服务和环境配置。
// packageID: 上传套餐的唯一标识。
// rootPath: 本地文件系统中待上传文件的根目录。
// storageAffinity: 偏好的节点ID列表上传任务可能会分配到这些节点上。
// 返回值: 执行过程中遇到的任何错误。
var _ = MustAddCmd(func(ctx CommandContext, packageID cdssdk.PackageID, rootPath string, spaceAffinity []cdssdk.UserSpaceID) error {
// 记录函数开始时间,用于计算执行时间。
startTime := time.Now()
defer func() {
// 打印函数执行时间。
fmt.Printf("%v\n", time.Since(startTime).Seconds())
}()
// 根据节点亲和性列表设置首选上传节点。
var storageAff cdssdk.UserSpaceID
if len(spaceAffinity) > 0 {
storageAff = spaceAffinity[0]
}
up, err := ctx.Cmdline.Svc.Uploader.BeginUpdate(packageID, storageAff, nil, nil)
if err != nil {
return fmt.Errorf("begin updating package: %w", err)
}
defer up.Abort()
err = filepath.WalkDir(rootPath, func(fname string, fi os.DirEntry, err error) error {
if err != nil {
return nil
}
if fi.IsDir() {
return nil
}
file, err := os.Open(fname)
if err != nil {
return err
}
defer file.Close()
return up.Upload(fname, file)
})
if err != nil {
return err
}
_, err = up.Commit()
if err != nil {
return fmt.Errorf("commit updating package: %w", err)
}
return nil
}, "obj", "upload")
*/