ドットファイル管理ツールを作った話

こんにちは、山田ハヤオです。お久しぶりです。

無事に国公立大学に合格し、共通テストも終えました。

大学までの数カ月間でタイピングの練習とGolangの勉強をしていました。

Golangの勉強の一環も兼ねて、ドットファイルをGitで管理するツールを書いたのでそれの紹介です。

スポンサーリンク

lico

まず今回作ったツールのソースコードです。MITで公開しています。

GitHub - Hayao0819/lico: Simple and flexible dotfiles manager written in Golang
Simple and flexible dotfiles manager written in Golang - Hayao0819/lico

純粋なGolangで書かれています。

GitHub - ssh0/dot: Simplest dotfiles manager written in shellscript :shell:
Simplest dotfiles manager written in shellscript :shell: - ssh0/dot

もともとこのツールを使おうとしていたのですが、機能不足が否めなかった上に開発が2019年でストップしていたので、インターフェースを参考にしながら書き直した次第です。

使い方

インストール

 まずは導入からです。

sudo sh -c "$(curl -L https://raw.githubusercontent.com/Hayao0819/lico/master/dl.sh)"

このコマンドで最新安定版のバイナリをインストールできます。

リポジトリ作成

licoはドットファイルをGitリポジトリで管理します。

なのでまずは格納するリポジトリを作成します。

今回はGitHub上に

GitHub - Hayao0819/dotfiles
Contribute to Hayao0819/dotfiles development by creating an account on GitHub.

を作成しました。

設定ファイル記述

licoはディレクトリ直下にあるlico.listを読みに行きます。

lico.listはリポジトリ内とホームディレクトリ内の配置を記述するファイルで、Golangのテンプレート構文をサポートしています。

テンプレート構文で利用可能な変数はlico envコマンドで確認できます。

テンプレート構文については以下の記事を参考にしてください。

Go Template、最高のプログラミング言語 - Qiita
はじめにtemplate はGo言語標準のDSLですが、その構文は Brainf*ckインタープリターを実装できるほど強力です。go-templateはチューリング完全?brainf*ck処理系…

lico.listの基本構文は以下のとおりです。

<リポジトリでの(相対)パス> : <ホームディレクトリでの(相対)パス>

例えば、macOSでのみ追加するファイルの場合以下のように記述できます。

# コマンド
{{ if eq .OS "darwin" }}
    ./some/hoge.txt : {{ .Home }}/piyo.txt
{{ end }}

この場合リポジトリでsome/hoge.txtにあるファイルを$HOME/piyo.txtと定義しています。

licoのセットアップ

ファイルをリポジトリに設置し、設定ファイルを記述したらlicoを設定します。

まず以下のコマンドで初期化を実行します。

lico init <URL>

これで設定ディレクトリ内にリポジトリがcloneされます。

その後、次のコマンドでシンボリックリンクを作成します。

lico set

ファイルの変更

管理されているファイルを変更したら以下のコマンドでコミットできます。

lico commit <コミットメッセージ>

リポジトリのPull

lico pull

終わりに

まだ未完成で、いくつか問題点もありますが、初めてのGo製ツールにしてはうまくできたんじゃないかと思っています。

今後も色々改善していく予定です。それでは、また今度。

コメント

タイトルとURLをコピーしました