/clangsay

The classic cowsay program, written in C.

Primary LanguageCDo What The F*ck You Want To Public LicenseWTFPL

clangsay

version license issues build

default

マルチバイト文字準対応の Unicode 環境専用 cowsay (設定可能な喋る牛) クローン。
ただし、特殊文字が含まれる場合は、相変わらずズレてしまいます。
cowsay の-Wオプションに該当するものはありませんが、後述の方法により同様の機能は実現可能です。

Requirements

  • pkg-config >= 0.26

  • GLib >= 2.0

  • libbenly >= 1.0.0-17 (同梱)

  • GNU make

  • gcc or llvm+clang

Install

Debian GNU/Linux or Debian based system (amd64)

もし、あなたが 64bit PC (amd64) アーキテクチャ用 Debian GNU/Linux を利用している場合、以下の方法で簡単にコンパイル済みバイナリパッケージをインストールする事ができます。また、これをベースとした各 GNU/Linux ディストリビューションでも多くの場合で利用可能でしょう。

# echo 'deb [trusted=yes] http://ssiserver.moe.hm/pub/debian ./' >> /etc/apt/sources.list	
# apt-get update	
# apt-get install clangsay

ソースパッケージをダウンロードし、自分好みの変更や修正を加えたのち、コンパイル済みバイナリパッケージを作成したいというケースもあるでしょう。その場合には、概ね以下の手順で可能です。

# cat <<EOF >> /etc/apt/sources.list
deb [trusted=yes] http://ssiserver.moe.hm/pub/debian ./
deb-src [trusted=yes] http://ssiserver.moe.hm/pub/debian ./
EOF
# apt-get update
# apt-get build-dep clangsay
% apt-get source clangsay    # または apt-source -b clangsay
% cd clangsay-${VERSION}
% dpkg-buildpackage -uc -us -d
# dpkg -i ../*.deb

詳しい情報についてはDebian 新メンテナーガイド 日本語版をご覧下さい。

Docker

ビルド済みバイナリと cowfile がバンドルされたイメージを生成するための Dockerfile が同梱されています。

% HEAD=`git rev-parse --short HEAD`
% make docker-image IMGTAG=$HEAD
% yasuna | docker run --rm -i clangsay:$HEAD -f yasuna_16
 _______________________
< 自分でやったんじゃん! >
 -----------------------
   \
    \
         ..:  ̄ ̄ ̄ ̄: :.
       /::  /|.:/ |.: .:\
      ,  /|/  |./  |.ハ.: .:ヽ
    ./.:イ__ノ   ヽ、___∨.: .:.
   ./: .:≡≡     ≡≡.|.: .:|
   /ノ|/} }.      } } |:ハ:.:|
     .ヽ{,{ -~~~- {,{|:/ノ:从
      ∨v、>z-r-x-:r</レレへ

Other systems.

  • 全てインストールする場合

    % git clone --recursive https://github.com/sasairc/clangsay.git && cd clangsay
     % make
     # make install
  • libbenlyを共有ライブラリとしてインストールし、それを利用する場合

     # make install-dep
     # make WITH_SHARED=1 install
  • 実行ファイルのみをインストールし、cowsay と cows を共有する場合

     % make COWPATH="/usr/local/share/cowsay/cows"	# パスは環境に合わせてください
     # make install-bin

その他のオプションに関しては、INSTALL.jaをご覧下さい。

zshでの補完

$(PREFIX)/share/clangsay/compdef/_clangsay.zsh_clangsayとして、$fpathの通ったディレクトリにコピーして下さい。

Usage

基本的に cowsay のオプションと同様です。
例外として、ANSIエスケープシーケンスによる色付け等に対応しました。

% export COWPATH="~/.cows"	# COWPATHを指定したい場合
% clangsay foo bar baz
 ____
/ foo \
| bar |
\ baz /
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
% clangsay "foo bar baz"
 ____________
< foo bar baz >
 ------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
% cat /proc/meminfo | head -n 10 | clangsay
 ____________________________
/ MemTotal:        6107204 kB \
| MemFree:          614952 kB |
| MemAvailable:    4587172 kB |
| Buffers:          865520 kB |
| Cached:           666056 kB |
| SwapCached:            0 kB |
| Active:          1873528 kB |
| Inactive:         765352 kB |
| Active(anon):    1157912 kB |
\ Inactive(anon):    37476 kB /
 ----------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

--thinkオプションでは、 cowthink のような「牛さんが考える」動作になります。

% echo "プカプカ" | clangsay --think -f iwashi.cow
 _______
< プカプカ >
 -------
   o
    o
         ____ _______
      ィ''  @ :. ,! ,, , , ̄ ̄ ¨` ‐-            __
       \    ノ   i            ’ ’’ ’’、_;:`:‐.-_-‐ニ==彳
         ` <. _  .ー 、                       !三  <
                 `¨  ‐= . ____.. ニ=-‐‐`'´`ミ、   三>
                                                  ̄ ̄

-Rオプションは何かを強調したい時に便利だと思います。これはあくまで主観。

% lsb_release | clangsay -R 10
 ________________________________________________________________________________
/  ____________________________________________________________________________   \
| /  ________________________________________________________________________   \ |
| | /  ____________________________________________________________________   \ | |
| | | /  ________________________________________________________________   \ | | |
| | | | /  ____________________________________________________________   \ | | | |
| | | | | /  ________________________________________________________   \ | | | | |
| | | | | | /  ____________________________________________________   \ | | | | | |
| | | | | | | /  ________________________________________________   \ | | | | | | |
| | | | | | | | /  ____________________________________________   \ | | | | | | | |
| | | | | | | | | / Distributor ID: Debian                      \ | | | | | | | | |
| | | | | | | | | | Description: Debian GNU/Linux 9.1 (stretch) | | | | | | | | | |
| | | | | | | | | | Release: 9.1                                | | | | | | | | | |
| | | | | | | | | \ Codename: stretch                           / | | | | | | | | |
| | | | | | | | \  --------------------------------------------   / | | | | | | | |
| | | | | | | \  ------------------------------------------------   / | | | | | | |
| | | | | | \  ----------------------------------------------------   / | | | | | |
| | | | | \  --------------------------------------------------------   / | | | | |
| | | | \  ------------------------------------------------------------   / | | | |
| | | \  ----------------------------------------------------------------   / | | |
| | \  --------------------------------------------------------------------   / | |
| \  ------------------------------------------------------------------------   / |
\  ----------------------------------------------------------------------------   /
 --------------------------------------------------------------------------------
  \
   \
    \
    
           ____
       ,: .: .: :.ヽ
     ,'       /\   i
     {: .:ノレヘ/  Viヘ:}
    .{,、〈 O   O{.:.
    ノヽ\!"       }.:ハ
      Wハw=-、へ,ャ<,V'      
         /ヘ }{./\
        ;: i:V:!;}
        |:|: :|}
        |:|:。: 。l}
        >-'-゚-'`゚u
        ーi-i~i-i~
         |.|  |.|
         |-|  |-|
         ヒコ  ヒコ 

cowsay に於ける-Wオプションはありませんが、nkf-fオプションを介すことで、同等の機能を実現できます。

詳しくはclangsay --helpをご覧下さい。

Environment variable

COWPATH

環境変数$COWPATHは、シェルの様々な検索パスと同様に:区切りで、複数ディレクトリの指定ができます。

% export COWPATH="/foo/bar/baz:/hoge/fuga/piyo:/ramen/oudon"

環境変数$COWPATHに存在しないディレクトリが登録されている場合は無視されます。

DEFAULT_COWFILE

環境変数$DEFAULT_COWFILEは、-f, --fileオプションを使用せずに実行した場合の cowfile を置き換えます。

% echo $COWPATH
/usr/local/share/clangsay/cows
% clangsay -l | grep doseisan
doseisan.cow
% export DEFAULT_COWFILE="doseisan.cow"	# ファイル名
% export DEFAULT_COWFILE="doseisan"     # 拡張子省略
% export DEFAULT_COWFILE="/usr/local/share/clangsay/cows/doseisan.cow"	# パス指定

Thanks

  • Masaya Tk
    yasuna に続き、clangsay まで MacOS X 向け Homebrew リポジトリへ追加して頂きました。
    更には多くのユニーク(!)な cowfile の作成および提供、加えて Dockerfile の作成等々。
    全て書きたくても書ききれない程のご厚意に、この場を借りて謝辞を申し上げます。
    詳細はAUTHORSのクレジットをご覧下さい。

License

WTFPL version 2

Original

cowsay and cowthink
Archived from the original on February 25, 2012.

schacon/cowsay
Git version of awesome cowsay project.

Author

sasairc (https://github.com/sasairc)

Masaya Tk (https://github.com/844196)