From 2901211b570054e409b3db51f9081c2f94f159b5 Mon Sep 17 00:00:00 2001 From: An-tol <88716253+An-tol@users.noreply.github.com> Date: Sun, 26 Jan 2025 19:03:43 +0300 Subject: [PATCH] Update codes.go checks for mandatory flags have been added, error handling and output has been improved, messages about the status of operations have been added, the structure has been simplified and code uniformity has been ensured. --- cli/codes.go | 76 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 28 deletions(-) diff --git a/cli/codes.go b/cli/codes.go index 6aa13dee..269c9b75 100644 --- a/cli/codes.go +++ b/cli/codes.go @@ -20,36 +20,44 @@ var codesCmds = &cli.Command{ var removeCandidateCodeCmd = &cli.Command{ Name: "rm", - Usage: "remove code info", + Usage: "Remove code info", Flags: []cli.Flag{ &cli.StringFlag{ Name: "code", - Usage: "code id", + Usage: "Code ID (required)", Value: "", }, }, Action: func(cctx *cli.Context) error { code := cctx.String("code") + if code == "" { + return fmt.Errorf("the --code flag is required") + } ctx := ReqContext(cctx) schedulerAPI, closer, err := GetSchedulerAPI(cctx, "") if err != nil { - return err + return fmt.Errorf("failed to get scheduler API: %w", err) } defer closer() - return schedulerAPI.RemoveCandidateCode(ctx, code) + if err := schedulerAPI.RemoveCandidateCode(ctx, code); err != nil { + return fmt.Errorf("failed to remove candidate code: %w", err) + } + + fmt.Println("Candidate code removed successfully") + return nil }, } var resetCandidateCodeCmd = &cli.Command{ Name: "reset", - Usage: "reset code info", + Usage: "Reset code info", Flags: []cli.Flag{ nodeIDFlag, &cli.StringFlag{ Name: "code", - Usage: "code id", + Usage: "Code ID (required)", Value: "", }, }, @@ -57,58 +65,65 @@ var resetCandidateCodeCmd = &cli.Command{ nodeID := cctx.String("node-id") code := cctx.String("code") + if nodeID == "" { + return fmt.Errorf("the --node-id flag is required") + } + if code == "" { + return fmt.Errorf("the --code flag is required") + } + ctx := ReqContext(cctx) schedulerAPI, closer, err := GetSchedulerAPI(cctx, "") if err != nil { - return err + return fmt.Errorf("failed to get scheduler API: %w", err) } defer closer() - return schedulerAPI.ResetCandidateCode(ctx, nodeID, code) + if err := schedulerAPI.ResetCandidateCode(ctx, nodeID, code); err != nil { + return fmt.Errorf("failed to reset candidate code: %w", err) + } + + fmt.Println("Candidate code reset successfully") + return nil }, } var generateCandidateCodeCmd = &cli.Command{ Name: "new", - Usage: "generate code", + Usage: "Generate codes", Flags: []cli.Flag{ - // nodeTypeFlag, &cli.Int64Flag{ Name: "count", - Usage: "code count", + Usage: "Number of codes to generate (must be greater than 0)", Value: 0, }, &cli.BoolFlag{ Name: "test", - Usage: "is test", + Usage: "Generate test codes", Value: false, }, }, Action: func(cctx *cli.Context) error { - // nodeType := cctx.Int("node-type") count := cctx.Int("count") isTest := cctx.Bool("test") + if count <= 0 { + return fmt.Errorf("the --count flag must be greater than 0") + } + ctx := ReqContext(cctx) schedulerAPI, closer, err := GetSchedulerAPI(cctx, "") if err != nil { - return err + return fmt.Errorf("failed to get scheduler API: %w", err) } defer closer() - // if nodeType != int(types.NodeCandidate) && nodeType != int(types.NodeValidator) { - // return nil - // } - - if count <= 0 { - return nil - } - list, err := schedulerAPI.GenerateCandidateCodes(ctx, count, types.NodeCandidate, isTest) if err != nil { - return err + return fmt.Errorf("failed to generate candidate codes: %w", err) } + fmt.Println("Generated codes:") for _, code := range list { fmt.Println(code) } @@ -119,12 +134,12 @@ var generateCandidateCodeCmd = &cli.Command{ var loadCandidateCodeCmd = &cli.Command{ Name: "get", - Usage: "load candidate code info", + Usage: "Load candidate code info", Flags: []cli.Flag{ nodeIDFlag, &cli.StringFlag{ Name: "code", - Usage: "code id", + Usage: "Code ID (optional)", Value: "", }, }, @@ -132,20 +147,25 @@ var loadCandidateCodeCmd = &cli.Command{ nodeID := cctx.String("node-id") code := cctx.String("code") + if nodeID == "" { + return fmt.Errorf("the --node-id flag is required") + } + ctx := ReqContext(cctx) schedulerAPI, closer, err := GetSchedulerAPI(cctx, "") if err != nil { - return err + return fmt.Errorf("failed to get scheduler API: %w", err) } defer closer() infos, err := schedulerAPI.GetCandidateCodeInfos(ctx, nodeID, code) if err != nil { - return err + return fmt.Errorf("failed to load candidate code info: %w", err) } + fmt.Println("Candidate code infos:") for _, info := range infos { - fmt.Printf("code:%s node:%s type:%s\n", info.Code, info.NodeID, info.NodeType.String()) + fmt.Printf("Code: %s, Node: %s, Type: %s\n", info.Code, info.NodeID, info.NodeType.String()) } return nil