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

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

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

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

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

スポンサーリンク

lico

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

GitHub - Hayao0819/lico: Go言語で書かれたシンプルなDotfilesマネージャー
Go言語で書かれたシンプルなDotfilesマネージャー. Contribute to Hayao0819/lico development by creating an account on GitHub.

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

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

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

使い方

インストール

 まずは導入からです。

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

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

リポジトリ作成

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

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

今回はGitHub上に

Build software better, together
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 330 million projects.

を作成しました。

設定ファイル記述

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

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

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

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

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

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をコピーしました