🎄メリクリ🎄
なにこれ?
banner
コマンドのPowerShell版を作ってみました。
以前シェル芸人たちの間でbanner
コマンドが流行ったことがありまして、
(下記リンク参照)
その際に@mattnさんがgobannerというGo言語のbanner実装を作りました。
で、その実装方法に感銘を受けて、PowerShell版を作ってみたのがコレになります。
実はモノ自体は結構前に作っていて、公開するタイミングを失ってしばらく寝かせていたのですが、今なら良いかなーと思い公開することにしました。
PSBanner
ソースコードはGitHubに上げています。
インストールはPowerShell Galleryから可能です。
Install-Module -Name PSBanner -Scope CurrentUser
なお、実装の都合*1、Windowsのみでの動作となります。
動作確認はPowerShell 5.1で行っていますが、おそらくPowerShell 2.0以降であれば動くはずです。
基本的な使い方
Write-Banner
コマンドに好きな文字列を食わせてください。
-FontName
パラメーターで表示フォントを、-FontSize
パラメーターでフォントサイズを指定できます。
使用可能なフォント名はGet-FontFamilies
コマンドで取得可能です。
コード例はGitHubに載せているのでそちらを見ていただければと思います。
実装について
基本方針はgobannerの実装を参考にしています。
内部的に指定されたフォントでBitmapを描画し、不透明なドットを#
に置き換えるというものです。
一度見てしまうと単純なやり方に思えますが、最初に見たときは「よくこんなこと思いつくなぁ!」と本当に驚きました。
gobannerに対して、フォントの指定は名称で可能なのと、Screen Widthはコンソールバッファの値を使う様に変えています。
あとPowerShellでは文字列以外のオブジェクトの入力もあるため、その辺に対する処理もちょっと入っています。
補足
本エントリはPowerShell Advent Calendar 2016 21日目の代理投稿になります。
クリスマスツリー 50cm ミニ ツリー 卓上 オーナメント セット 電球 飾り付き プレゼント クリスマスグッズ イルミネーション ギフト
- 出版社/メーカー: YaCooling
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
*1:System.Drawing.*なクラスを使っているため、System.Drawing.dllのないPowerShell Coreでは動作させることができません