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 listTaskParams struct { filterStatus saasapi.TaskStatus saasHttp *saashttp.SaasClient } func RunTaskList(args ...string) error { fs := flag.NewFlagSet("create", flag.ExitOnError) cfgFile := paramConfig(fs) filter := paramFilterStatus(fs) if err := fs.Parse(args); err != nil { fmt.Fprintln(os.Stderr, "command line parse error", "err", err) return err } if fs.NArg() > 0 { fs.PrintDefaults() return nil } cfg, err := LoadConfigFile(*cfgFile) if err != nil { fmt.Fprintln(os.Stderr, "LoadConfigFile error", "err", err) return err } listTaskParams := listTaskParams{ saasHttp: &saashttp.SaasClient{ Client: &http.Client{}, ApiUrls: &cfg.ApiUrls, Auth: &cfg.Auth, }, } switch *filter { case "all": listTaskParams.filterStatus = saasapi.TaskStatus_ALL case "waiting": listTaskParams.filterStatus = saasapi.TaskStatus_WAITING case "running": listTaskParams.filterStatus = saasapi.TaskStatus_RUNNING case "success": listTaskParams.filterStatus = saasapi.TaskStatus_SUCCESS case "fail": listTaskParams.filterStatus = saasapi.TaskStatus_FAIL } return doTaskList(listTaskParams) } func doTaskList(listTaskParams listTaskParams) error { saasReq := &saasapi.SaasReq{ Cmd: &saasapi.SaasReq_TaskList{ TaskList: &saasapi.TaskList{ StatusFilter: listTaskParams.filterStatus, }, }, } res, err := listTaskParams.saasHttp.TaskList(saasReq) if err != nil { fmt.Fprintln(os.Stderr, "submit List Task error", "err", err) return err } if res.Code != saasapi.ErrorCode_SUCC { fmt.Fprintln(os.Stderr, "task list failed", "code", res.Code, "status", res.Status) return nil } taskRes := res.GetTaskListRes() fmt.Printf("task res: %v\n", protojson.Format(taskRes)) return nil }