changlog
- 32# スライス変数を使用してFIXは、デフォルトの貪欲なモードに入ります
アドレス
https://github.com/guonaihong/clop
https://gitee.com/guonaihong/clop
CLOP
CLOPは、小さいながらも完全に形成された構造体ベースのコマンドライン解析機能、です。(ゼロから実現)
特徴
- バインディングのサポート環境変数
env DEBUG=xx ./proc
- サポート・パラメータは、コレクション
cat a.txt b.txt
、あなたが置くことができるa.txt, b.txt
バルクメンバーを、分類された分類である、にご指定の構造体のメンバーを集めます - サポートオプションの短い
proc -d
または長いオプションproc --debug
楽勝 - POSIXスタイルのコマンドラインのサポートは、supportコマンドの組み合わせが
ls -ltr
あるls -l -t -r
速記共通のPOSIX標準コマンドの達成を促進します - 子供の養育実現のgitサブコマンドのスタイルを容易にするため
git add
、簡単なサブコマンドの登録を、限りも、限り、あなたは好きなように、サポートされており、使用がCLOPを達成することができます無限のサブコマンドに、ライン上の3,4,5を書き込むような構造として、 - デフォルト値のサポート
default:"1"
、複数のデータタイプのサポート、型変換を使用すると、手間を省くましょう - 親密なリピートコマンドエラー
- 厳格な短いオプション、長いオプションエラー。避け曖昧誕生オプション
- 有効性モードのサポートは、の束を記述する必要はありません
if x!= ""
か、if y!=0
若者のコードを無駄に
コンテンツ
インスト
go get github.com/guonaihong/clop
クイックスタート
パッケージメインインポート( "FMT" "" github.com/guonaihong/clop )型ハロー構造体 { ファイルストリング- ; --file "用法: "Fファイル"` `CLOPを" } FUNC メイン(){ 時間:= こんにちは {} CLOP。バインド(& H) FMT。printf("%位のV \ n"は、H) } // ./one試験-f // main.Hello {ファイル: "テスト"} // ./one試験--file // main.Hello {ファイル: "テスト"}
例
必要なフラグ
パッケージメインインポート( "FMT" "" github.com/guonaihong/clop )型カール構造体 { たURL 文字列; - "必須`:URLが"有効" --url "使用" U `CLOP" }をfuncをメイン() { C := カール {} CLOP。バインド(& C) }
設定されたデフォルト値
デフォルトタグは、デフォルト値を設定するために使用することができる、書き込み直接普通型、複合型はJSONで表され
パッケージメインインポート( "FMT" "github.com/guonaihong/clop" )型defaultExampleの構造体 { のInt INT 1 "` `デフォルト" のfloat64がのfloat64 デフォルトは`: "3.64"が` のfloat32がFLOAT32を`デフォルト: "3.32"` SliceString [ ] 文字列`デフォルト: "[\" 1 \」、\ "2 \"] "` SliceInt [] INT `デフォルト:"[1,2,3,4,5] "` SliceFloat64 [] のfloat64 `デフォルト:" [1.1,2.2,3.3,4.4,5.5]」` } 関数メイン(){ = defaultExample {} CLOP。バインド(&ド) FMT。printf("%のV \ n"は、デ) } //実行// ./use_def //出力:// {1 3.64 3.32 [1~2] [1 2 3 4 5] [1.1 2.2 3.3 4.4 5.5]}
サポート環境変数
use_env.go //ファイル名 パッケージのメインインポート( "FMT" "github.com/guonaihong/clop" )型のenv のstruct { OmpNumThreadの文字列ENV = omp_num_thread "用法: "OMP NUMスレッド"`: `CLOP" パスの文字列`CLOPを: "ENV = XPATH"使用"のXPath" ` 最大INT "最大スレッド"` CLOP: "ENV = MAX"利用 } FUNC メイン(){ E := ENV {} CLOP。バインド(& E) FMT。printf("%#のV \ n"は、 // ENV XPATH = `pwd`はomp_num_thread = 3 MAX = 4 ./use_env //出力 // main.env {OmpNumThread: "3"、パス: "/ホーム/郭"、最大:4}
サブコマンド
パッケージのメインインポート( 「FMT」「github.com/guonaihong/clop」 )タイプの追加のstruct { すべてのブール値「用法:「--all; A」すべて追跡し、追跡されていないファイルの変更を追加し、 ` - :` CLOP」強制ブール値を` CLOP: " - F; --force"使用: "それ以外の場合は無視ファイルを追加できるように" ` PATHSPEC [] の文字列` CLOP: "引数= PATHSPEC" ` } 型MVの構造体 { 強制BOOL ` CLOP: " - F; --force 「用法:」」それ以外の場合は無視されたファイルを追加することが可能` } 型Gitの構造体 { 追加アドオン `CLOP:「サブコマンド=追加」用法:「インデックスにファイルの内容を追加」` MVは mvを `CLOP:「サブコマンド= MV」用法:「移動やファイル、ディレクトリ、またはシンボリックリンクの名前を変更」` } FUNC メイン( ){ G := gitの {} CLOP。バインド(& G) FMT。printf("gitの:%#のV \ n"は、グラム) FMT。printf("gitの:セットMV(%のT)またはセットの追加(%T)\ n"は、CLOP IsSetSubcommand("MV" 。)、CLOP IsSetSubcommand("追加")) } //実行://。 // gitの:main.git {追加:main.addを{すべて:偽の、力:[]の文字列(ゼロ)}、Mvは:main.mv {フォース:偽} PATHSPEC、真} // gitの:セットMV(偽)またはセットの追加(真)
Linuxのコマンドのオプションを実装
ネコ
パッケージメインインポート( "FMT" "github.com/guonaihong/clop" )タイプの猫のstruct { NumberNonblankのBOOL `CLOP: " - C; -数空白以外の" 使用: "番号空でない出力線、オーバーライド"` ShowEndsはBOOL ` CLOP: " - E; -ショーエンド" 使用: ` "各行の終わりに表示$" 番号BOOL ` CLOP: " - N; -数" 使用: "数すべての出力ライン" ` SqueezeBlankのBOOL ` CLOP : " - S; -スクイーズ・ブランク" 使用:」抑止は、空の出力ラインを「繰り返し` ShowTab ブール `CLOP: " - T; -ショータブ" 使用"表示タブ文字^ Iとして"` ShowNonprinting BOOL `CLOP: " - V; -ショー非印刷" 使用:「使用^及びM-表記、除きますLFDとTAB用の」 ` ファイル [] の文字列 ` CLOP: "引数=ファイル" ` } FUNC メイン(){ C := 猫 {} ERR := CLOP。バインド(& C) FMT。printf("%の#のV、%sの\ n"は、C、ERR) } / * 使用法: ./cat [フラグ] <ファイル> フラグ: -E、 -ショー両端が各ラインの末尾に$を表示し 、-T -ショータブは^ Iとしてタブ文字を表示する -c、 -上書き、数空白以外の数の空でない出力ライン -n、 -番号の数すべての出力ライン -s、 -スクイーズ-空白の抑制は、空の出力ラインが繰り返さ ショー印字されない使用^とM-表記を、LFDとTABを除いて- 、-v :Argsの <ファイル> * /