この記事では、コマンド ライン プログラムを構築するためのオープン ソース ツール mkideal/cli を紹介します。 golang 標準ライブラリ flag は、コマンドラインパラメータ解析用に公式に組み込まれた実用的なライブラリです。この記事で紹介する cli の主な機能は基本的に flag ライブラリと同じですが、比較的シンプルでわかりやすい使い方と、より実用的なツールを提供します。 。 cli の主な機能には以下が含まれます:
cli は github 上のオープンソースですhttps://github.com/mkideal/cli
コマンドラインプログラムには豪華なインターフェイスはありませんが、サーバー側では、コマンドライン プログラムは利用できません。 不可欠ですが、多くの場合、グラフィカル インターフェイスよりも使いやすいです。コマンド ライン プログラムは Unix/Linux オペレーティング システムで非常に一般的であり、多数のプログラムがシステムにプリインストールされています。 cli ツールは、このようなコマンド ライン プログラムを簡単に構築するために使用される go 言語ライブラリです。 まず簡単な例を見てみましょう:
package mainimport ( "github.com/mkideal/cli")type argT struct { cli.Helper}func main() { cli.Run(&argT{}, func(ctx *cli.Context) error { argv := ctx.Argv().(*argT) if argv.Help { ctx.WriteUsage() } else { ctx.String("hello\n") } return nil })}
このコードをコンパイルして実行します
$ go build -o app$ ./apphello$ ./app -hOptions: -h, --help display help
もちろん、このコードには実際の関数はありません。コードの 12 行目は、cli の Run 関数を呼び出します。関数のプロトタイプは次のとおりです:
func Run(argv interface{}, fn func(*Context) error, descs ...string)
パラメータ argv には、実行中にコマンド ライン パラメータを解析することによって値が割り当てられ、最後に Context オブジェクトに挿入されます。コールバック関数 fn に渡されます。コールバック関数の ctx.Argv() を通じて argv を取得します。
このサンプルコードの argT は cli.Helper から継承されており、その定義は次のとおりです:
type Helper struct { Help bool `cli:"!h,help" usage:"display help"`}
さて、より詳細に説明するために、より実用的なプログラムを作成しましょう。
package mainimport ( "fmt" "net/http" "github.com/mkideal/cli")type argT struct { cli.Helper Host string `cli:"H,host" usage:"specify host" dft:"0.0.0.0"` Port uint16 `cli:"p,port" usage:"specify port" dft:"8080"` Dir string `cli:"d,dir" usage:"static files directory" dft:"./"`}func main() { cli.SetUsageStyle(cli.ManualStyle) cli.Run(new(argT), func(ctx *cli.Context) error { argv := ctx.Argv().(*argT) if argv.Help { ctx.WriteUsage() return nil } http.Handle("/", http.FileServer(http.Dir(argv.Dir))) addr := fmt.Sprintf("%s:%d", argv.Host, argv.Port) ctx.String("listening on %s\n", addr) http.ListenAndServe(addr, nil) return nil })}
この例では、パラメーター オブジェクト argT にさらにいくつかの便利なフィールドがあります: Host Port Dir
まずコンパイルして実行しましょう
$ go build -o httpd$ ./httpd -h
さて、を作成するhtml ディレクトリに移動し、その内容を含む新しいファイルindex.html を作成します
<h1>Hello, this is my http server!</h1>
次に、http サーバーを起動します
$ mkdir html$ echo "<h1>Hello, this is my http server!</h1>" > html/index.html$ ./httpd -d htmllistening on 0.0.0.0:8080
次に、ブラウザから 127.0.0.1:8080 にアクセスすると、
が表示されます。デフォルトのポート 8080 の代わりに他のポートを指定できます。たとえば、指定されたポートが 3000 の場合、
$ ./httpd -d html --port=3000
または
$ ./httpd -d html --port 3000
または
$ ./httpd -d html -p=3000
または
りー
次にそれについて話しましょう パラメータ定義に表示され、パラメータを解析してヘルパーを表示するための鍵となるラベルです。
タグ cli、使用法、dft
cli - パラメーター フラグ名 (例では cli:"h,help" cli:"H,host" など)
にあるコマンド ライン プログラムで、これも cli を使用して構築されます。 clier は、次のようなコマンドを作成するために使用されます。
$ ./httpd -d html -p 3000
goplus
新しいサブコマンドは、完全な cli ベースのコマンド ライン プログラムを構築できます。使用例
$ clier hello$ clier -s "this is hello command's description" hello
この記事は cli の簡単な紹介です。 cli については以下の記事で詳しく紹介しています