1. 项目地址:
    https://github.com/urfave/cli

  2. 用法:

    1. 代码:

       package main
      
       import (
           "fmt"
           "github.com/urfave/cli/v2"
           "log"
           "os"
       )
      
       func main() {
           var name string
           app := &cli.App{
               Name:        "命令名称",
               Usage:       "用法",
               Version:     "v1.0",
               Description: "描述",
               Commands: []*cli.Command{
                   {
                       Name:    "command-a",
                       Aliases: []string{"ca"},
                       Usage:   "command-a 用法说明",
                       Flags: []cli.Flag{
                           &cli.StringFlag{
                               Name:        "flag-a",
                               Aliases:     []string{"fa"},
                               Value:       "default-flag-a-value",
                               Usage:       "flag-a 用法",
                               Destination: &name,
                               Required:    true,
                           },
                       },
                       Action: func(ctx *cli.Context) error {
                           fmt.Println("flag: ", ctx.String("flag-a"))
                           fmt.Println("command: ", ctx.Args().First())
                           return nil
                       },
                   },
                   {
                       Name:    "command-b",
                       Aliases: []string{"cb"},
                       Usage:   "command-b 用法说明",
                       Flags: []cli.Flag{
                           &cli.StringFlag{
                               Name:        "flag-b",
                               Aliases:     []string{"fb"},
                               Value:       "default-flag-b-value",
                               Usage:       "flag-b 用法",
                               Destination: &name,
                               Required:    true,
                           },
                       },
                       Subcommands: []*cli.Command{
                           {
                               Name:    "command-b-a",
                               Aliases: []string{"cba"},
                               Usage:   "command-b-a 用法说明",
                               Action: func(ctx *cli.Context) error {
                                   fmt.Println("flag: ", ctx.String("flag-b"))
                                   fmt.Println("command: ", ctx.Args().First())
                                   return nil
                               },
                           },
                           {
                               Name:    "command-b-b",
                               Aliases: []string{"cbb"},
                               Usage:   "command-b-b 用法说明",
                               Action: func(ctx *cli.Context) error {
                                   fmt.Println("flag: ", ctx.String("flag-b"))
                                   fmt.Println("command: ", ctx.Args().First())
                                   return nil
                               },
                           },
                       },
                   },
               },
           }
           err := app.Run(os.Args)
           if err != nil {
               log.Fatal(err)
           }
       }
    2. 测试:

      go run test.go ca -fa faValue caValue
      go run test.go cb -fb fbValue cba cbaValue
      go run test.go cb -fb fbValue cbb cbbValue
文档更新时间: 2024-04-20 10:57   作者:lee