Enchan1207 / blueprintpy

汎用パッケージコンフィグCLIジェネレータ

Home Page:https://enchan1207.github.io/blueprintpy/index.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CLI設計

Enchan1207 opened this issue · comments

(from #1)

もうパーツは揃ってるので、あとはこれをどう調理するか

正直 pip_initとは別パッケージにしてもいい と思う
むしろそのほうがやりやすいまであるんじゃないかな

ちょっと枠だけ作ってみた これいけそうだな

必要な引数は…

  • テンプレートの名前か場所 とりあえずテンプレートを特定するのに十分な情報
  • 展開先のパス

だけか (あとは引数ハンドラがやってくれる)

ふと思ったんですが、ArgsHandlerってpip_init_cliにいたほうが嬉しくないですか?
バリデータとかはpip_initには関係ないし…

でも、そうなるとそれに追従する Loader とか Serializer も一所に移動しなきゃいけなくなる?

ただ結局 pip_init.Configをどうするかにしか関与してない(テストコードでは色々使ってるけど)から
そのふたつもcliサイドのクラス…ってことになるのかな
(pip_initのメイン処理でjsonに直す作業は本来必要ないもんね)

よし ちょっと LoaderSerializerArgsHandler を移そう

移行しますた 特段新しい機能追加したわけじゃないけどimportの互換性切ったのでバージョン上げてます

make cleanupをちょっとだけ賢くした

ファイル名が揃ってなかったので修正

あとはオプションじゃーい

暫定案

pip_init /path/to/extract [--name=name_of_template] [--template_dir=/path/to/additional/template]

使用例

pip_init .

展開先ディレクトリを引数の最初に持ってきたのは、テンプレート名が指定されなかった時に自動で default を選択させるため
いっそこれすら省略可能にして pip_init だけ打てばなんとかなるようにしてもいいかもしれない

nargs="?"なんてのが存在するのか…!!

そうか、テンプレートディレクトリのパスを解決するとこからか
こりゃめんどくさいな

ちょっと待って 引数ハンドラのパスいらなくない?

テンプレートそのものをPythonモジュールで管理するとするなら、必ず__init__.pyがロードされるはずだよね?
その中で引数ハンドラを何かしらの形でロードしてもらえればそれでいいのでは

問題はどの引数ハンドラを使うかという点.

args_handlerじゃなくてargs_handler_nameみたいにして、引数ハンドラに __handler_name__みたいな属性をつけて
それに合致するハンドラを呼び出す…とか?

いやでもそれただ冗長なだけだよな せっかくロードしてるんだしそのまま使えばいいじゃんって話で

pythonのSetが順番保持するなら「最後に継承されたハンドラ」でいいかと思ったけどどうやらそうでもなさそう…

んーとりあえず__handler_name__ だな

Configの方にも手いれなきゃいけないのめんどくさいね…(

パスはしっかりPathで渡すように変更

~/.pip_init/が空気になってますね…

インポート処理が複数回行われるのか これは

よし 流れとしては完成したと言っていいんじゃなかろうか!

あとはArgsHandler.defaultを作り込むだけだ