Github: https://github.com/anishathalye/dotbot
Dotbot
Dotbotは新しくインストールしたシステムでさえ、 git clone $url && cd dotfiles && ./install
ように簡単にあなたのドットファイルをインストールします!
Dotbotはあなたのドットファイルをブートストラップするツールです(それは[ドット]ファイルです)。 バージョン管理システムは、あなたが思っている以上に多くのことをしているので、それはあなたが思うよりも少ないです。
Dotbotは、軽量で自己完結型で、外部からの依存がなく、インストールが不要です。 Dotbotは、あなたのドットファイルを管理するために使用していた他のツールの代わりに使うこともできます。また、DotbotはVCSに依存しません。あなたのドットファイルを管理しようとはしません。
ドットファイルの整理についての詳細なチュートリアルが必要な場合は、このブログ記事を参照してください。
5分で走る
新鮮なスタートですか?
すばらしいです! ユーザー提供のinit-dotfilesスクリプトを使用して、ドットファイルの作成を自動化することができます。 テンプレートリポジトリを使用する場合は、「 dotfiles_template 」をチェックしてください 。 あるいは、あなたがインスピレーションを求めているだけなら、私たちはあなたをカバーしています。
既存のドットファイルとの統合
以下は、ほんの数ステップでDotbotを使って設定するのに役立ちます。
Gitを使用している場合、Dotbotをサブモジュールとして追加できます:
cd ~/.dotfiles # replace with the path to your dotfiles
git init # initialize repository if needed
git submodule add https://github.com/anishathalye/dotbot
cp dotbot/tools/git-submodule/install .
touch install.conf.yaml
Mercurialを使用している場合、Dotbotをサブペクトとして追加することができます:
cd ~/.dotfiles # replace with the path to your dotfiles
hg init # initialize repository if needed
echo "dotbot = [git]https://github.com/anishathalye/dotbot" > .hgsub
hg add .hgsub
git clone https://github.com/anishathalye/dotbot
cp dotbot/tools/hg-subrepo/install .
touch install.conf.yaml
まず、 install.conf.yaml
を入力するだけで、Dotbotが残りの部分を処理します。 始めるのを助けるために、我々は受け入れられたパラメタのためのコンフィギュレーションドキュメンテーションと同様にコンフィギュレーションファイルの例を持っています。
注: install
スクリプトは、Dotbotの適切なバージョンをチェックアウトし、完全なDotbotインストーラを呼び出すシムです。 デフォルトでは、スクリプトは構成がinstall.conf.yaml
にあるとdotbot
ます.yaml Dotbotサブモジュールはdotbot
ます。 これらのパラメータのいずれかを変更するには、 install
スクリプトの変数を適切に編集します。
Dotbotをサブモジュールまたはサブペクトとして設定すると、現在のバージョンでDotbotがロックされます。 いつでもDotbotをアップグレードできます。 サブモジュールを使用している場合は、 git submodule update --remote dotbot
実行し、dotbotをDotbotサブモジュールのパスに置き換えます。 ./install
実行する前に変更をコミットしてください。そうしないと、古いバージョンのDotbotがインストールスクリプトによってチェックアウトされます。 サブレポを使用する場合は、Dotbotディレクトリでgit fetch && git checkout origin/master
を実行します。
完全な例
ここでは完全な設定の例を示します。
構成ファイルの従来の名前はinstall.conf.yaml
。
- defaults:
link:
relink: true
- clean: ['~']
- link:
~/.dotfiles: ''
~/.tmux.conf: tmux.conf
~/.vim: vim
~/.vimrc: vimrc
- shell:
- [git submodule update --init --recursive, Installing submodules]
設定ファイルは、JSONで記述することもできます。 上記のYAML設定と同じJSONがあります。
このファイルの従来の名前はinstall.conf.json
。
[
{
"defaults": {
"link": {
"relink": true
}
}
},
{
"clean": ["~"]
},
{
"link": {
"~/.dotfiles": "",
"~/.tmux.conf": "tmux.conf",
"~/.vim": "vim",
"~/.vimrc": "vimrc"
}
},
{
"shell": [
["git submodule update --init --recursive", "Installing submodules"]
]
}
]
構成
DotbotはYAMLまたはJSON形式の設定ファイルを使用して、ドットファイルの設定方法を指定します。 現在、Dotbotはファイルとフォルダをリンクし 、 シェルコマンドを実行し、壊れたシンボリックリンクのディレクトリをクリーンアップする方法を知っています。 Dotbotはカスタムコマンド用のユーザープラグインもサポートしています。
理想的には、ブートストラップ設定は冪等でなければなりません。 つまり、インストーラは問題を起こすことなく何度も実行できるはずです。 これにより、多くのことを簡単に行うことができます(特に、マシン間での更新の同期は非常に簡単になります)。
Dotbot構成ファイルはタスクの配列です。各タスクは、そのコマンドのデータにマッピングされたコマンド名を含む辞書です。 タスクは、指定された順序で実行されます。 タスク内のコマンドには、定義された順序はありません。
ネストされた構文を書くときは、YAMLが空白に敏感であることに注意してください。 例で使用されている書式設定に従うことは良い考えです。
また、YAMLの~
はJSONのnull
と同じです。 チルダを含む単一の文字列が必要な場合は、必ず引用符で囲んでください: '~'
リンク
リンクコマンドは、ファイルとディレクトリをどのようにシンボリックリンクするかを指定します。 必要に応じて、既存のファイルを必要に応じて上書きして、強制的にリンクするように指定できます。 パス内の環境変数は自動的に展開されます。
フォーマット
リンクコマンドは、ターゲットをソース場所にマッピングするディクショナリとして指定されます。 ソースの場所は、(インストーラの実行中に指定された)ベースディレクトリを基準にして指定します。 ディレクトリ名の末尾に “/”文字を使用しないでください。
リンクコマンドは、(オプションの)拡張構成をサポートします。 このタイプの構成では、ソースの場所を直接指定する代わりに、ターゲットが拡張構成辞書にマップされます。 これらのディクショナリは、 path
をソースパスにマップし、必要に応じて親ディレクトリを作成する必要がtrue
場合はcreate
をtrue
、誤ったシンボリックリンクを自動的に上書きする場合はrelink
をtrue
、ファイルまたはディレクトリを強制的にリンクする場合はtrue
、シンボリックリンクに相対パスが必要な場合はrelative
をtrue
として指定します。
例
- link:
~/.config/terminator:
create: true
path: config/terminator
~/.vim: vim
~/.vimrc:
relink: true
path: vimrc
~/.zshrc:
force: true
path: zshrc
ソースの場所が省略されている場合、またはnull
に設定されている場合、Dotbotは宛先のベース名を先頭に使用し.
存在する場合には取り除かれる。 これにより、以下の3つの設定ファイルが同等になります。
- link:
~/bin/ack: ack
~/.vim: vim
~/.vimrc:
relink: true
path: vimrc
~/.zshrc:
force: true
path: zshrc
- link:
~/bin/ack:
~/.vim:
~/.vimrc:
relink: true
~/.zshrc:
force: true
[
{
"link": {
"~/bin/ack": null,
"~/.vim": null,
"~/.vimrc": {
"relink": true
},
"~/.zshrc": {
"force": true
}
}
}
]
シェル
シェルコマンドは、実行するシェルコマンドを指定します。 シェルコマンドは、ベースディレクトリ(インストーラ実行時に指定)で実行されます。
フォーマット
シェルコマンドは、いくつかの異なる方法で指定できます。 最も簡単な方法は、コマンドを実行するコマンドを含む文字列として指定することです。
別の方法は、最初の要素がシェルコマンドで、2番目の要素が人間が判読可能なオプションの記述である2要素配列を指定することです。
シェルコマンドは、より詳細な制御を提供する拡張構文もサポートしています。 コマンドは、実行するコマンド、説明、およびstdin
、 stdout
、およびstderr
が有効かどうかを含むディクショナリとして指定できます。 この構文では、すべてのキーはコマンド自体を除いてオプションです。
例
- shell:
- mkdir -p ~/src
- [mkdir -p ~/downloads, Creating downloads directory]
-
command: read var && echo Your variable is $var
stdin: true
stdout: true
description: Reading and printing variable
-
command: read fail
stderr: true
クリーン
クリーンコマンドは、デッドシンボリックリンクをチェックするディレクトリを指定します。 これらの無効なリンクは自動的に削除されます。 force
オプションがtrue
設定されていない限り、dotfilesディレクトリを指す無効なリンクのみが削除されtrue
。
フォーマット
クリーンコマンドは、クリーニングするディレクトリの配列として指定します。
クリーンコマンドは拡張構成構文をサポートしています。 このタイプの構成では、コマンドはオプションへのディレクトリパスとして指定されます。 force
オプションがtrue
に設定されている場合、deadfリンクがdotfilesディレクトリ内のファイルを指していなくても削除されます。
例
- clean: ['~']
- clean:
~/.config:
force: true
デフォルト
オプションを何度も繰り返す必要がないように、プラグインのデフォルトオプションを指定できます。 これは、たとえば、linkコマンドで使用すると非常に便利です。
デフォルトは、デフォルトの設定に続くすべてのコマンドに適用されます。 デフォルトは複数回設定できます。 それぞれの変更によってデフォルトが新しいオプションセットに置き換えられます。
フォーマット
デフォルトは、アクション名を設定にマッピングするディクショナリとして指定されます。設定は、オプション名から値までの辞書です。
例
- defaults:
link:
create: true
relink: true
プラグイン
Dotbotは、プラグインによって実装されたカスタムディレクティブもサポートしています。 プラグインは、 dotbot.Plugin
サブクラスとして実装されるため、 can_handle()
とhandle()
実装する必要があります。 プラグインが指定された名前のアクションを処理できる場合、 can_handle()
メソッドはTrue
を返しTrue
。 handle()
メソッドは何かをして、正常に完了したかどうかを返す必要があります。
すべての組み込みDotbotディレクティブは、デフォルトで読み込まれるプラグインとして記述されるため、カスタムプラグインを記述する際に参照として使用できます。
プラグインは、– --plugin-dir
オプションと--plugin-dir
オプションを使用して、絶対パスまたはベースディレクトリを基準にしたパスを使用してロードされます。 これらのオプションは、 install
スクリプトに直接追加することをお勧めします。
ウィキ
詳しくは、 Dotbotのwikiをチェックし、ヒントやトリック、ユーザーが投稿したプラグインなどを確認してください。
貢献する
機能リクエスト、バグレポート、パッチがありますか? すばらしいです! あなたができることについては、 CONTRIBUTING.mdを参照してください。
ライセンス
Copyright(c)2014-2017 Anish Athalye。 MITライセンスの下でリリースされました。 詳細については、 LICENSE.mdを参照してください。