2022-09-10

F#でコマンドレットを書いてる pt.4

krymtkts/pocof の話。

めちゃめちゃ放置してたのだけど、 8 月末くらいから触れるようになってきたので、気になる部分ですぐ変えられる部分を書き換えて、 PowerShell Gallery に公開した。 はじめたころから 4 ヶ月くらい経ったのか。

PowerShell Gallery | pocof 0.1.0-alpha

現時点に公開する動機としては、自分の普段遣いでは未だ poco を使ってるというのもあって、折角なのでそれを pocof に変えようと考えた次第だ。 一部機能に関しては未実装なので、オプションはコメントアウトして隠した形で公開している。

大きい変更としては、PowerShell オブジェクトを作成せずに PSCmdlet のサブクラスの中で PowerShell の Cmdlet を呼び出す方法がわかったので、その辺を書き換えた。 これが非常に参考になった →InvokeCommand.InvokeScript not returning Output · Issue #12137 · PowerShell/PowerShell

DLL の モジュールを公開するのは初めてだったので、これまた躓きつつも先達の知恵を借りて乗り越えられた。 これ → Writing a PowerShell Core Module With F#, A Complete Guide | Brianary

結局始めた頃はフォルダ指定の公開でええんちゃうかと思ってたが、 Import-Module してから公開する方がめっちゃ楽なので、参照元に従いそう変えちゃった(こだわり無し)。 そもそもこの記事がなかったら pocof はサクッと始めてなかったので、感謝しかない。

それと特に意図があった訳ではないが、 PowerShell Module Manifest で使ったことがなかった PreRelease を使ってみたりもした。

公開にあたっての目玉機能は何もない。何なら poco の機能で未だ実装してないものもある。 ただいくつか自分が poco を使っていて困ってたことは、これで解消される。

  • 正規表現パターンの記述中にエラーで落ちない
  • クエリ記述中に左右カーソル移動ができる(buggy な疑いアリ)
  • (あとテスト用の非対話モード ← 普段利用ではまじで意味ないけどテストが楽)

今後欲しい機能としては、とりあえず自分の使い方だと、プロパティ周り。 プロパティ指定のフィルタとプロパティ入力の補完ができたら相当楽になる。表示するプロパティが選べたりしたら最高。

pocof で印字されたアイコングリフが ?? になってたり他にも色々未実装・直さないといけない点あれど、自分が普段使うツールを自分の手でコントロールできる(しかも学習まで兼ねて)というのは、イイことやなと改めて思った。