ちなみに

火曜日の空は僕を押しつぶした。

ランダムな絵文字をクリップボードにコピーする Raycast の Script Command

GitHub のプルリクをレビューしたときに無言で Approve したり LGTM って文字で書くのが味気ないのでランダムな絵文字をコメントにいれて Approve している。

この絵文字を選ぶのは完全に人力で、一覧を出して適当なアルファベット一文字を入れて出てきた候補からピックしていた。 しかし、だんだん選ぶ絵文字が偏ってきてしまっていて、新しい絵文字を出せなくなっていた。 なぜなら絞り込んだあとは同じソート順なのでだいたい上の方から選んでしまうので。

これを解消するのに Raycast でランダムな絵文字をクリップボードにコピーする Extension を書いたら良さそうとは思っていました。 しかし、重い腰は上がらずに作れていないまま早幾年。

ChatGPT で遊ぶようになったので、試しに Extension の作り方を聞いてみたら、なんかただのシェルスクリプトを提示された。 よくよく調べてみるとどうも Script Commands というのがあるらしく、Extension を書くまでもないこういう感じのものはサクッと作れるらしい。 なぜか React で書く Extension しかないと思い込んでいたので思わぬ発見。 これがあるならもっとガツガツと小さいスクリプトを書けば良かったのであった。

ということで ChatGPTと相談しながら仕上げた Script Command です。 これを Script Command 用に設定したディレクトリに作った適当なファイルに書いて実行権限を付与してあげるともう動く。

#!/usr/bin/env bash
#
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title random emoji
# @raycast.mode silent

# Optional parameters:
# @raycast.icon 📋

# Documentation:
# @raycast.description ランダムに絵文字をコピーする
# @raycast.author Sixeight
# @raycast.authorURL https://blog.nishimu.land

EMOJIS=($(curl -s https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json | jq -r '.[] | .emoji'))
EMOJI="${EMOJIS[$RANDOM % ${#EMOJIS[@]}]}"
echo -n $EMOJI | pbcopy
echo "$EMOJI"

これでレビューがもっと楽しくなりそうです。