$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

CLIツールを作るとき、ユーザー設定ファイルやデータをどこに配置するか

chat-hatenablogをpip installでインストール可能にした - $shibayu36->blog;にてchat-hatenablogをpip installできるようにするとき、ユーザー設定ファイルやデータをどこに配置するかに迷った。このツールでは、環境変数の設定として.envファイルを、ブログデータのインデックスとしてindex.pickleファイルを使っている。

これらのファイルの置き場所について少しだけ調べたので、現状分かったことをメモしておく。

まず選択肢としては二つありそうだった。

今回はディレクトリを二つに分けるの面倒だなと思い、~/.chat-hatenablog/配下に置くという選択を取った。

一方でXDG Base Directoryの仕様に沿うと、利用ユーザーがXDG_CONFIG_HOME環境変数などを用いて設定ファイルの配置場所をコントロールできるというメリットがありそうだ。例えばpecoだとこのようにXDG_CONFIG_HOMEやXDG_CONFIG_DIRSを参照している

そういうわけで、ちゃんとしたツールを作るならXDG Base Directoryの仕様に沿って作ると良いと分かった。またRaycastといったツールも同じようなディレクトリ構成になっているため、CLIツールに限らず、このような配置を使えば良さそうだ。