🐄
Go でアスキーアートジェネレーターである cowsay を作りました!
作成日:
2021/07/15
0
🐮 Fast, funny, everyone wanted? new cowsay!!
_____________
< こんにちは! >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Go で cowsay を作ってみました。私のターミナルを使った作業風景をいろんな方に見せると「そのアスキーアートかわいいね!」や「何その画面!?」といった様々な反応をいただけます。
この cowsay は toilet というコマンドにパイプを渡して作っていました。
# Colorful Cowsay using fortune
function random_cowsay() {
fortune -s -n 100 | cowsay -f `ls -1 /usr/local/Cellar/cowsay/3.03/share/cows/ | sed s/\.cow// | tail -n +\`echo $(( 1 + (\\\`od -An -N2 -i /dev/random\\\`) % (\\\`ls -1 /usr/local/Cellar/cowsay/3.03/share/cows/ | wc -l\\\`) ))\` | head -1` | toilet --gay -f term
}
if which fortune cowsay >/dev/null; then
while :
do
random_cowsay 2>/dev/null && break
done
fi && unset -f random_cowsay
このコードを zshrc
に書き込んで呼び出していました。
このように「ランダムで虹色な cowsay 」を実行するために毎回シェルの起動が重いというのに耐えていたわけですが、そろそろ限界だったので今回上記のような cowsay を作成しました。
🐄 パッケージとして使う
何かしらパッケージを作る際に、遊び心で cowsay を実行できるようになるといいなと思い、 cowsay を文字列として受け取れるようにしました。
README にも書いてますが、こんな感じで使うこともできます。
package main
import (
"fmt"
cowsay "github.com/Code-Hex/Neo-cowsay"
)
func main() {
say, err := cowsay.Say(
cowsay.Phrase("Hello"),
cowsay.Type("default"),
cowsay.BallonWidth(40),
)
if err != nil {
panic(err)
}
fmt.Println(say)
}
🐃 コマンドを使う
$ cowsay Hello
_______
< Hello >
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
オリジナルでは不可能だった日本語にも対応してます。go-runewidth のおかげですね!
____________________
< これが人生であります.. >
--------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
ランダムで召喚します
虹色(toilet っぽく)、グラデーションカラー([lolcat]
何気に頑張ったスーパー🐮さんモード(マ○オっぽく)
gopher も喋る!!
___________
< Go 最高!! >
-----------
\
\ ,_---~~~~~----._
_,,_,*^____ _____``*g*\"*,
/ __/ /' ^. / \ ^@q f
[ @f | @)) | | @)) l 0 _/
\`/ \~____ / __ \_____/ \
| _l__l_ I
| [______] I
| | | | |
| ~ ~ |
| |
| |
🐂 インストール
Mac and Linux users via Homebrew
$ brew update
$ brew install Code-Hex/tap/neo-cowsay
パッケージとして
go get -u github.com/Code-Hex/Neo-cowsay
cowsay コマンド
$ go get -u github.com/Code-Hex/Neo-cowsay/cmd/cowsay
cowthink コマンド
$ go get -u github.com/Code-Hex/Neo-cowsay/cmd/cowthink
最後に
色とりどりでとてもユニークなアスキーアート達と一緒に、あなたの寂しいターミナルをデコレーションしてみませんか!?
こんにちは!プログラミングを始めてしばらく経ちますが、最近50万円の案件を獲得することができるようになってきました!これからも精進して参ります!