2016-08-20 3 views
0

main関数を持ち、フラグパッケージを使用して引数を指定するパッケージを作成したいと思います。golangパッケージもcliのスタンドアロンで使用する必要があります

また、このパッケージを他のパッケージに含めることができ、cliにargsを渡すのと同じ構文のメソッドを呼び出すことができます。おそらく私は、主な機能を持っている含まれたパッケージをしたい理由のいくつか

err := myPackage.setFlags(args ...string) 
out, err := myPackage.exec() 

のようなものがある:

  • これは、スタンドアロンの実行可能ファイルとしてパッケージを配布するために私を可能にします。私のユーザーは、完全なシステム

  • それは私が別のすべてを維持し、OSの\ execを使うべき

マニュアル、トラブルシューティングを容易に可能性を必要としないかもしれませんか?

各パッケージのスタンドアロンラッパー(これらは生成可能かもしれません)を作成し、setFlagsを実行せずに完全なシステムから直接エクスポートした関数を呼び出す必要がありますか?

これを実行するための良いパターンがありますか?

また、私は反パターンを思いついていますか?

答えて

1

一般的なパターンは、プロジェクトに実行可能ファイルを持つcmd pkgを持つことです。この

cmd/ 
    foo/main.go 
pkg/ 
    foo/foo.go 

cmd/foo輸入pkg/fooとコマンドラインフラグを扱うよう

何か。 pkg/fooは、すべてのライブラリコードを含むパッケージです。このパターンは他人にpkg/fooをインポートさせ、cmd/foofooという実行可能ファイルを提供します。

関連する問題