0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Go】手軽にCLIツールを作成できるCobraを触ってみた

Posted at

概要

  • Go製のCLIツールを簡単に開発できるフレームワークCobraを触ってみた
  • インストール方法や簡単なサンプルコード

インストール、動作確認

  1. cobraをインストール
$ go get -u github.com/spf13/cobra@latest
  1. cobra-cliをインストール
$ go install github.com/spf13/cobra-cli@latest
  1. テンプレート作成
cobra-cli init --license MIT --viper=false

下記のようなテンプレートが作成される

├── cmd
│   └── root.go
├── go.mod
├── go.sum
├── LICENSE
├── main.go
  1. 動作確認
$ go run main.go
A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:

コマンドを追加してみる

例えば「hello」というコマンドを作りたい場合は、

cobra-cli add hello

cmd/hello.go が自動生成される

/*
Copyright © 2025 NAME HERE <EMAIL ADDRESS>

*/
package cmd

import (
	"fmt"

	"github.com/spf13/cobra"
)

// helloCmd represents the hello command
var helloCmd = &cobra.Command{
	Use:   "hello",
	Short: "A brief description of your command",
	Long: `A longer description that spans multiple lines and likely contains examples
and usage of using your command. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.`,
	Run: func(cmd *cobra.Command, args []string) {
		fmt.Println("hello called")
	},
}

func init() {
	rootCmd.AddCommand(helloCmd)

	// Here you will define your flags and configuration settings.

	// Cobra supports Persistent Flags which will work for this command
	// and all subcommands, e.g.:
	// helloCmd.PersistentFlags().String("foo", "", "A help for foo")

	// Cobra supports local flags which will only run when this command
	// is called directly, e.g.:
	// helloCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}

実行してみる

$ go run main.go hello
hello called

フラグの追加

package cmd

import (
	"fmt"

	"github.com/spf13/cobra"
)


var name string

// helloCmd represents the hello command
var helloCmd = &cobra.Command{
	Use:   "hello",
	Short: "挨拶を表示するコマンド",
	Run: func(cmd *cobra.Command, args []string) {
		fmt.Printf("Hello, %s!\n", name)
	},
}

func init() {
	rootCmd.AddCommand(helloCmd)
	
	// フラグ追加
	helloCmd.Flags().StringVarP(&name, "name", "n", "World", "名前を指定できます")
}

実行してみる

$ go run main.go hello
# => Hello, World!

$ go run main.go hello --name Taro
# => Hello, Taro!

$ go run main.go hello -n Jiro
# => Hello, Jiro!

まとめ

  • インストールから実行まで非常に手軽だった
  • まだ作りたいCLI思い浮かばないが、機会があれば使っていきたい
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?