tuyuri6ka / dotfiles

0 stars 0 forks source link

【〆 2023/01】dotfiles 配下からシンボリックリンクを貼る処理を簡潔にする #10

Closed tuyuri6ka closed 7 months ago

tuyuri6ka commented 7 months ago

関連調査 issue(あれば)

特になし

背景(なるべく詳しく、他タイトルのシスに説明するように)

dotfiles において重要なのは リポジトリにある dotfiles から $HOME へとシンボリックリンクを貼る処理となる。しかしながら現状のシンボリックリンクを貼る処理は以下のような非常に煩雑な書き方となっている。

https://github.com/tuyuri6ka/dotfiles/blob/741446702d3fb7455fd2f3fb8589dee71db73aac/install.sh#L111-L132

シンボリックリンクは、 ln -sfvn ${実体ファイルのパス} ${貼りたい場所のパス} で貼ることができる。また目的の場所はそれぞれ ${HOME}/users/${user_name}/dotfiles/(clone してできたリポジトリ) から ${HOME}/users/${user} に貼るだけで良いので、複雑な作業は必要ないはずである。

上記では dirname や basename を使って頑張って整形しているが、 realpath コマンドというものがあるのでこちらと grep をうまく組み合わせる手法を試してみる。

なお、 dotfiles は途中で ${HOME} を書き換えて HOME=${HOME}/users/${user} とするため、${HOME} の状態には気をつけることとする。

実装方針

想定では git clone 後にできた ${HOME}/users/tuyuri6ka/dotfiles/dotfiles/ 配下で dot_list=$(ls -a | xargs realpath | grep -v "dotfiles$" | sort) をすることで .vimrc, .gitconfig などの絶対パスのリストを抽出し、あとはファイル名を取得しつつ tuyuri6ka/ 配下に ln -sfnv "${abspath}" "${relpath}" みたいなことをすれば、シンボリックリンクが晴れるはずである。

なお、 unlink は unlink コマンドを叩けば良いだけのはずである。

issue 作成後の作業

tuyuri6ka commented 7 months ago

実装完了したのでCloseします。