mkr hosts にコントリビュートした話
こちらでリリースの紹介があったmkrコマンドに一つコントリビュートしておりました。
リリースされたのは、mkr v0.41.0 です。
一つ前のバージョンまで mkr hosts は検索結果が一台もないと、null が返っていました。
$ mkr hosts --service all-working-service --status poweroff null
これだと、jq コマンドで何かしら処理するのが面倒。とあるスクリプトでは以下のようにしていました。
HOSTS=$(mkr hosts --service all-working-service --status poweroff)
if [ "${HOSTS}" == "null" ]; then
HOSTS="[]"
fi
for _ID in $(echo "$HOSTS"| jq -c -r '.[].id')
do
...
done
これだとやっぱり面倒ということで、Pullrequestを作って、マージしていただきました。
実質的なdiffはこれだけ
diff --git a/hosts/app.go b/hosts/app.go
index 4778db1..3c41be7 100644
--- a/hosts/app.go
+++ b/hosts/app.go
@@ -54,7 +54,7 @@ func (ha *hostApp) findHosts(param findHostsParam) error {
case param.verbose:
return format.PrettyPrintJSON(ha.outStream, hosts)
default:
- var hostsFormat []*format.Host
+ hostsFormat := make([]*format.Host, 0)
for _, host := range hosts {
hostsFormat = append(hostsFormat, &format.Host{
ID: host.ID,
sliceをvarではなくmakeで作成することで、nil sliceにならず、Marshal時に null ではなく意図通り [] として出力されました。
これで楽ができます。