go_html/css_WEB-ITnose を使用してコマンド ライン プログラムを構築する簡単な方法

WBOY
リリース: 2016-06-24 11:18:55
オリジナル
1038 人が閲覧しました

要約

この記事では、コマンド ライン プログラムを構築するためのオープン ソース ツール mkideal/cli を紹介します。 golang 標準ライブラリ flag は、コマンドラインパラメータ解析用に公式に組み込まれた実用的なライブラリです。この記事で紹介する cli の主な機能は基本的に flag ライブラリと同じですが、比較的シンプルでわかりやすい使い方と、より実用的なツールを提供します。 。 cli の主な機能には以下が含まれます:

  • Golang ベースのタグとリフレクションの実装。
  • パラメータのタイプと範囲のチェック、およびカスタム検証関数。
  • -h や --help などの短い形式と長い形式のフラグをサポートします。
  • 環境変数をデフォルト値として使用する場合でも、デフォルト値の指定をサポートします。
  • パラメータとして配列とマップをサポートします。
  • フレンドリーなヘルプ表示。
  • ……

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"`}
ログイン後にコピー

さて、より詳細に説明するために、より実用的なプログラムを作成しましょう。

単純な http サーバー

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 は 4 つのタグをサポートします

cli - パラメーター フラグ名 (例では cli:"h,help" cli:"H,host" など)
  • uses - パラメーターの使用法の説明 、ヘルプに表示されるテキストです
  • dft - パラメータのデフォルト値を指定します。次の dft: "$HOME" のように環境変数をデフォルト値として指定できます
  • name - パラメータの参照名、実際の機能はありません
  • 作成 コマンド ライン プログラム用のコマンド ライン ツール clier goplus

clier は、

mkideal/cli

にあるコマンド ライン プログラムで、これも cli を使用して構築されます。 clier は、次のようなコマンドを作成するために使用されます。

$ ./httpd -d html -p 3000
ログイン後にコピー

goplus

新しいサブコマンドは、完全な cli ベースのコマンド ライン プログラムを構築できます。使用例

$ clier hello$ clier -s "this is hello command's description" hello
ログイン後にコピー

この記事は cli の簡単な紹介です。 cli については以下の記事で詳しく紹介しています

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート