Go でコマンドライン引数を扱う
Go で名前付きのコマンドライン引数を扱う方法および OGP 画像生成ツール公開の宣伝。
~~告知~~
OGP 画像生成ツールを公開しました。
https://github.com/k1350/ogpgen
この記事に設定している OGP 画像は上記ツールを使用しています。
せっかくなのでバイナリ配布しようかと思ったのですが、ライセンス関連が面倒だったのでやめました。自分でビルドしてください。
~~告知終わり~~
開発環境
- go version go1.16.5 linux/amd64
本文
Go で名前付きのコマンドライン引数を扱う方法だが、flag パッケージを用いると簡単にできる。
引数の型指定やデフォルト値の設定までできて大変便利。
fsize := flag.Float64("fsize", 100.0, "Font Size")
tmargin := flag.Int("tmargin", 0, "Top Margin")
out := flag.String("o", "out.jpg", "Output File Path")
flag.Parse()
このように引数名、デフォルト値、引数の説明を書いて flag.Parse() とすると、各変数にパースされた値が入る。
使用する場合は
fmt.Println("fsize ", *fsize)
のようにする。
実行時は
.\ogpgen -text="OGP 画像生成ツール" -bpath="/your_template/template.jpg" -fpath="/your_font/03SmartFontUI.ttf"
こんな感じで使える。
型に合わない値を実行時に指定すると下記のようにパースエラーが出て、すべての引数の説明が書きだされる。
invalid value "text" for flag -fsize: parse error
Usage of ogpgen.exe:
-bpath string
Background Image Path
-fcolor string
Font Color Code (default "#000000")
-fpath string
Font Path
-fsize float
Font Size (default 100)
-lspace int
Line Space
-o string
Output File Path (default "out.jpg")
-smargin int
Side Margin
-text string
Output Text
-tmargin int
Top Margin
未定義の引数を指定した場合も下記のようにエラーとなる。
flag provided but not defined: -fs
(以下略)
以上。