概要
https://github.com/overgrow-crops/pkgen
yamlで書かれたパッケージのツリー構造の設計図を元に
パッケージを生成します。
コマンドとしては下記の3種類だけですが非常にパワフルなツールかと思います。
- pkgen
- pkgen template
- pkgen lang
使ってみる
インストール
$ curl -O -L https://github.com/overgrow-crops/pkgen/releases/download/v0.2.0/pkgen
$ chmod +x ./pkgen
$ mv ./pkgen /usr/local/bin
確認
$ pkgen -v
$ pkgen/v0.2.0 darwin-x64 node-v14.4.0
プロジェクトルートで
初回のpkgen
実行はプロジェクトディレクトリにpkg
ディレクトリと.pkgen.yml
を作成します。
ユーザのホームディレクトリに.pkgen
ディレクトリがない場合ホームディレクトリにも自動で環境構築します。
$ pkgen
____ _
| _ \| | ____ _ ___ _ __
| |_) | |/ / _` |/ _ \ '_ \
| __/| < (_| | __/ | | |
|_| |_|\_\__, |\___|_| |_|
|___/
⠏ Add the .pkgen.yml file to the current directory...
.pkgen.ymlを書く
.pkgen.ymlに任意のディレクトリ構造を書いてやります。
pkg:
test:
hoge.foo.bar:
パッケージのジェネレート (コマンド: pkgen)
$ pkgen
[generate] to pkg/test/hoge/foo/bar/
テンプレートの切り替え (コマンド: pkgen template)
$ pkgen template
? Select the package template you want to use.
@default(current) -> (Use arrow keys)
❯ @default
プログラミング言語ごとのテンプレート切り替え (コマンド: pkgen lang)
$ pkgen lang
? Select the programming language you want to use.
ecmascript5(current) -> (Use arrow keys)
❯ @typescript
ecmascript5
ecmascript6
テンプレートは幾つでも作成可能
pkgen template
コマンドは$HOME/.pkgen/template
ディレクトリ直下のディレクトリを読み込みます。
なので$HOME/.pkgen/template/sample
というディレクトリを作りpkgen template
コマンドを実行すると
下記のようにテンプレートが追加されます。
ただし、テンプレートの中には最低でも一つ言語毎のテンプレートが含まれている必要があります。
空のテンプレートを選択しても警告が出るだけで選択する事は出来ません。
$ pkgen template
? Select the package template you want to use.
@default(current) -> (Use arrow keys)
❯ @default
sample
まとめ
今回cliフレームワークはcacを使っています。
これまでcliはGoのurfaveなどを使っていましたが
Node.jsのcliフレームワークは簡単に選択肢やチェックボックスが実装でき
ユーザーの入力パターンを制限し簡単に安全なcliの実装が出来ることが分かりました。
Goでのcli開発もそれはそれでならではの良さがあるでしょうが
Node.jsでのcli実装もかなり優秀なようです。
何よりchalkやinquirerというライブラリのおかげでサクッとカッコいいのができます。
やはりカッコいいのは作る側としても自分の作ったものを継続的に育てていこうという
モチベーションが続くのでいいですね。