2020/08/23

WindowsのコマンドプロンプトやPowerShellでも簡単に色付き出力できるcoloutツールを作りました!


色付きで出力したい

CLIツールやスクリプトで自動化処理などを進めていると、タスクの成功や失敗をユーザーに伝えたいことが多々あります。そんな時、他のログと同じように白い文字で出力すると埋もれてしまいがちです。こんな感じに。

昨今のGolangやRust、Pythonなどで作られたCLIツールでは、色をつけてパッと見で成功したのか失敗したのか示してくれるものが多数あります。そんなイメージで、スクリプトで出力するメッセージやレガシーなCLIツールの出力に色をつけられると少し利便性が向上しそうです。ほら、こんな感じで。


という訳でGolangで簡単に作ってみました。 

colout

🎨 It's a simple and tiny tool for getting colored output in scripts.

https://github.com/kemokemo/colout

Colored output anywhere

インストールしてみてね

WindowsだけでなくLinux、FreeBSD、macOSなどにも対応しており、ScoopHomebrewといったパッケージ管理の仕組みを使ってインストールが可能です。

この記事では例としてWindowsでScoopを使ってインストールしてみます。まずはkemokemoのバケットを追加してください。

scoop bucket add kemokemo-bucket https://github.com/kemokemo/scoop-bucket.git

次にインストールです。

scoop install colout

使ってみよう

使い方も簡単で、つけたい色をサブコマンド(例えばsuccessなど)で指定して、echoコマンドに渡すように出力したい内容を引数で渡すだけです。使用可能なサブコマンドは公式リポジトリのUsageをご覧いただくか、colout -hを実行すると表示されるヘルプを確認してください。

例えば、下図のようにタスクが成功したことを緑色の出力で伝える処理を書いてみましょう。

まずは、Windowsのバッチファイルだとこんな感じです。

@echo off

echo.
echo 重い処理を実行中...
echo (いろいろなログが出力)
echo .....
echo ....
echo ...
echo ..
echo .
echo. 

if %errorlevel% == 0 (
  colout success タスクが成功しました!
) else (
  colout error タスクが失敗しました。。
)

echo.

サブコマンドで色を指定するechoコマンドみたいな雰囲気で使えます。次に、PowerShellスクリプトも書いてみましょう。

Write-Host 
Write-Host 重い処理を実行中...
Write-Host (いろいろなログが出力)
Write-Host .....
Write-Host ....
Write-Host ...
Write-Host ..
Write-Host .
Write-Host 

if($?) {
  colout success タスクが成功しました!
}
else {
  colout error タスクが失敗しました。。
}

Write-Host 

まとめ

coloutを使えば、手軽に色付きログを利用できるようになります。タスク実行結果に目を凝らさなくても成功か失敗かを判別できるようになるのは、ちょっとしたことですが日々の開発にプラスになるのではないかと思います。

是非使ってみてください。そしてお気づきの点があれば公式のIssueにご連絡いただけると嬉しいです。それでは、良きスクリプトライフを!ʕ◔ϖ◔ʔ