2016-08-02 24 views
1

github.com/spf13/cobraパッケージを使用してプロセスのコマンドライン引数を解釈していますが、パラメータ値の決定方法を理解できません。github.com/spf13/cobraを使用してパラメータ値を取得する

私はパラメータ値で更新されます内部変数を使用しての作業プログラム(以下)は次のように私が手に出力され

OptPort := 8088 

rootCmd := &cobra.Command{ 
    Use: "server", 
    Short: "Root command short version", 
    Long: "Root command long version", 
} 

startCmd := &cobra.Command{ 
    Use: "start", 
    Short: "Start command short version", 
    Long: "Start command long version", 
    Run: func(cmd *cobra.Command, args []string) { 
     fmt.Println("args: " + strings.Join(args, " ")) 
     fmt.Println("port: " + OptPort) 
    }, 
} 
startCmd.Flags().IntVarP(&OptPort, "port", "p", OptPort, "Port to listen to") 

rootCmd.AddCommand(startCmd) 

rootCmd.Execute() 

を:

args: 
port: 8088 

私は私ができることを実現ポート変数を調べることでポート値を取得しますが、値がargs変数にも含まれると思います。私は間違ったことをしているので、args変数は空ですか? args変数が空であると予想される場合、args変数の目的は何ですか?

答えて

1

args変数は、その特定のcobra動詞に渡される余分なパラメータです。たとえば、あなたがserverコマンドであなたのstart動詞を望んでいた場合(たとえば)特定の設定ファイルを必要とし、あなたは単に

server start -p 8080 config.yml

"config.yml"のようなものを渡すことができargs[0]に配置されます。

関連する問題