Fish shell packageを作成して、公開するまでのいろは!
Fisherとは
FisherとはFish shellに関するパッケージマネージャーです。似たようなものでOh-my-fishがありますが、使い勝手はFisherの方が便利で簡単であるという印象です。
そんなわけで、よくfish shellを自分は書いて、コマンドなどを作成したりするのですが、今回は自分が作った関数(function
)を公開するまでの手順を紹介します。
注意点ですが、どれもfish shellで書いているので、bashと移植性がないかもしれません。
他の参考にできるパッケージ
以下のリポジトリで有用なパッケージを見ることができます。
参考にできるときがあると思います。
前提
まず、Fish shell Functionの仕様を把握することが大事になります。
Fishの関数は、まず呼び出されると~/.config/fish/function/
以下で、コマンド名と一致するファイルが実行されます。
また、ファイル名と同様の関数名が呼び出されます。
Fisherでfisher add
をしたとしても、ダウンロードした関数は~/.config/fish/function/
以下にあります。
Develop段階
ある程度、完成するまでは公開したくない時があると思います。
そのような時は、ローカルで試しながら、Github Private Repoで運用するのが良いと思います。
まず、リポジトリを作成して、ディレクトリを作ってください。今回はそのディレクトリ名をmy-fisher/
とします。
現在のディレクトリ構成は
.my-fisher/
です。
最初の関数をmy-fisher
を作成します。
以下のように追加します。
. └── my-fisher.fish
そして中身は以下のような関数になっています。
#!/usr/local/bin/fish function my-fisher echo "hoge" end
実際にパッケージ管理するまでに、一回実行してみます。
chmod +x ./my-fisher.fish ./my-fisher.fish
すると以下のようにレスポンスが返ってきます。
hoge
そして、以下のようにローカルディレクトを設定します。
$ fisher add (pwd)
すると以下のように関数が叩けるようになります。
$ my-fisher
そして、パッケージは~/.config/fish/fishfile
に追加されます。
$ cat ~/.config/fish/fishfile | grep "my-fisher"
また、関数の一覧は以下のコマンドでも知ることができます。
$ functions
ここまでで開発段階が整いました。
公開する
非常に簡単でPublic Repositoryにするだけです。
そして、どのように参照していたかがかかれてあるfishfile
をみていきます。
開発段階で
$ fisher add (pwd)
と絶対パスを指定したと思います。それを
[OwnerName]/[RepoName]
に変更をします。例えば、自分が作成したfishplelogger
だと以下のようにします。
KeisukeYamashita/fishplelogger
対応するリポジトリは以下の通りです。
そして、再度読み込みます。
$ fisher
これで公開ができます。
まとめ
Fisherのおかげで非常に簡単にfish shellパッケージを公開することができます。
どんどん公開して行こうと思います。