はじめに
Elixir プログラミングを楽しんでいるときに、ドキュメントを読んで確認したいことがあると思います。
皆さんはどのようにドキュメントを開いてますか。おそらくいろんなやり方があるのだろうと思います。
ここでは僕が使っているコマンドをご紹介いたします。
やりたいこと
ターミナルでコマンドを打つと、ブラウザが開き、Elixirのドキュメントが表示される仕組みを作る。
環境
$ uname -a
Darwin MBP-M1 23.2.0 Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:18 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T6000 arm64
$ elixir --version
Erlang/OTP 26 [erts-14.2.1] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit]
Elixir 1.16.0 (compiled with Erlang/OTP 26)
$ bash --version
GNU bash, version 5.2.26(1)-release (aarch64-apple-darwin23.2.0)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
成果
試行錯誤した結果、二つのシンプルなシェル関数ができ、満足しています。
これらを.bashrcで読み込み、いつでもターミナルで使えるようにしています。
Elixir ライブラリのドキュメントを開くコマンド
Elixirライブラリのドキュメントを WEB ブラウザで開くコマンドです。
何も引数がない場合、Elixirのドキュメントを開きます。
引数にライブラリ名(mix.exsファイルに記述する名称)を渡すとそれのドキュメントが開きます。
hexdocs() { mix hex.docs online "${1:-elixir}"; }
使い方
# Elixir のドキュメントをWEBブラウザで開く
hexdocs
# Phoenix のドキュメントをWEBブラウザで開く
hexdocs phoenix
# Nerves のドキュメントをWEBブラウザで開く
hexdocs nerves
mix hex.docs Mix タスクをラップしただけですので、それを直接呼んでもいいと思います。
mix hex.docs online ecto_sql
また、Mixを使うにはElixirが予めインストールされている必要があります。
Elixir ライブラリを検索するコマンド
Elixirライブラリを検索し、結果を WEB ブラウザで開くコマンドです。
引数に検索キーワードを渡します。
hexpm() { open "https://hex.pm/packages?search=${1:-}"; }
使い方
# "liveview"というキーワードを含むElixirライブラリを検索
hexpm liveview
# "nerves_system"というキーワードを含むElixirライブラリを検索
hexpm nerves_system
macOS の open コマンド
macOS の open コマンドは、ターミナルからファイル等を適切なアプリで開いてくれる便利なコマンドです。
Linuxにも似たようなものがありますが、コマンド名が異なるので、どちらの OS でも使えるようにするには工夫が必要です。
以下は一例です。 open コマンドが存在しない場合に、open という名称のエイリアスを定義しています。
Linuxの場合には xdg-open が存在するという前提で、あえてそのチェックはしていません。xdg-open が存在しない環境でお使いの場合は適宜コードを調整してください。
# make sure the open command is available
if ! command -v open &>/dev/null; then
alias open='xdg-open &>/dev/null'
fi
![]()
![]()
![]()
最後に一言
今の所うまくイゴいています。
実はLinuxで動作確認していません。後日確認します。
本記事は piyopiyo.ex #25:もくもく作業タイム の成果です。ありがとうございます。
