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")
*/
