Cobra 是一個強大的 Go 命令行界面 (CLI) 框架,它可以簡化 CLI 程序的開發過程。

# 安裝

你可以使用以下命令安裝 Cobra:

go get -u github.com/spf13/cobra

# 基本用法

Cobra 的核心是 cobra.Command 結構體,它表示一個 CLI 命令。下面是一個簡單的例子:

package main
import (
    "fmt"
    "os"
    "github.com/spf13/cobra"
)
func main() {
    var rootCmd = &cobra.Command{
        Use:   "myapp",
        Short: "A brief description of your application",
        Run: func(cmd *cobra.Command, args []string) {
            // Do Stuff Here
        },
    }
    if err := rootCmd.Execute(); err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

在這個例子中,我們定義了一個名為 rootCmdcobra.Command 結構體,它是應用程序的根命令。 Run 函數定義了當用戶執行 myapp 命令時,程序應該執行的操作。

# 子命令

Cobra 支持定義子命令,以創建更複雜的 CLI 程序。下面是一個包含子命令的例子:

package main
import (
    "fmt"
    "os"
    "github.com/spf13/cobra"
)
func main() {
    var rootCmd = &cobra.Command{
        Use:   "myapp",
        Short: "A brief description of your application",
    }
    var versionCmd = &cobra.Command{
        Use:   "version",
        Short: "Print the version number of myapp",
        Run: func(cmd *cobra.Command, args []string) {
            fmt.Println("myapp version 1.0.0")
        },
    }
    rootCmd.AddCommand(versionCmd)
    if err := rootCmd.Execute(); err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

在這個例子中,我們定義了一個名為 versionCmd 的子命令,它打印應用程序的版本號。我們使用 rootCmd.AddCommand(versionCmd) 將子命令添加到根命令中。

# 參數和標誌

Cobra 還支持定義命令行參數和標誌。下面是一個示例:

package main
import (
    "fmt"
    "os"
    "github.com/spf13/cobra"
)
func main() {
    var name string
    var rootCmd = &cobra.Command{
        Use:   "myapp",
        Short: "A brief description of your application",
        Run: func(cmd *cobra.Command, args []string) {
            fmt.Printf("Hello, %s!\\n", name)
        },
    }
    rootCmd.Flags().StringVarP(&name, "name", "n", "world", "Name to say hello to")
    if err := rootCmd.Execute(); err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

在這個例子中,我們定義了一個名為 name 的字符串參數,並使用 rootCmd.Flags().StringVarP 將其添加到根命令中。用戶可以使用 --name-n 標誌來設置要問候的名稱。

# 總結

Cobra 是一個功能強大且易於使用的 Go CLI 框架,它可以顯著簡化 CLI 程序的開發過程。它支持子命令、參數和標誌,並提供了許多其他有用的功能,如自動生成 bash 自動完成代碼和 man 頁面。如果你正在開發 Go CLI 應用程序,Cobra 絕對值得一試。

更新於

請我喝咖啡~( ̄▽ ̄)~*