package main import ( "flag" "fmt" "net/http" "os" "e.coding.net/rta/public/saasapi" "e.coding.net/rta/public/saasapi/pkg/saashttp" "google.golang.org/protobuf/encoding/protojson" ) type createTaskParams struct { hashFile string appid string task *saasapi.Task saasHttp *saashttp.SaasClient } func RunTaskCreate(args ...string) error { fs := flag.NewFlagSet("create", flag.ExitOnError) cfgFile := paramConfig(fs) // sourcePath := paramSourceConvertedPath(fs) hashFile := paramInputHashFile(fs) appid := paramAppid(fs) if err := fs.Parse(args); err != nil { fmt.Println("command line parse error", "err", err) return err } if fs.NArg() > 0 || len(*hashFile) == 0 { fs.PrintDefaults() return nil } cfg, err := LoadConfigFile(*cfgFile) if err != nil { fmt.Println("LoadConfigFile error", "err", err) return err } createTaskParams := createTaskParams{ hashFile: *hashFile, appid: *appid, saasHttp: &saashttp.SaasClient{ Client: &http.Client{}, ApiUrls: &cfg.ApiUrls, Auth: &cfg.Auth, }, task: &saasapi.Task{}, } taskBuf, err := os.ReadFile(createTaskParams.hashFile) if err != nil { fmt.Println("open task file error", "err", err) return err } if err = protojson.Unmarshal(taskBuf, createTaskParams.task); err != nil { fmt.Println("parse task file error", "err", err) } return doTaskCreate(createTaskParams) } func doTaskCreate(createTaskParams createTaskParams) error { saasReq := &saasapi.SaasReq{ Cmd: &saasapi.SaasReq_TaskCreate{ TaskCreate: createTaskParams.task, }, } if createTaskParams.appid != "" { saasReq.UseridType = saasapi.UserIdType_OPENID saasReq.Appid = createTaskParams.appid } res, err := createTaskParams.saasHttp.TaskCreate(saasReq) if err != nil { fmt.Println("submit Create Task error", "err", err) return err } if res.Code != saasapi.ErrorCode_SUCC { fmt.Println("task create failed", "code", res.Code, "status", res.Status) return nil } taskRes := res.GetTaskCreateRes() fmt.Printf("task res: %v\n", protojson.Format(taskRes)) return nil }