GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

anishathalye

dotbot – あなたのドットファイルをブートストラップするツール ⚡️

投稿日:

あなたのドットファイルをブートストラップするツール ⚡️ https://git.io/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場合はcreatetrue 、誤ったシンボリックリンクを自動的に上書きする場合はrelinktrue 、ファイルまたはディレクトリを強制的にリンクする場合はtrue 、シンボリックリンクに相対パスが必要な場合はrelativetrueとして指定します。

- 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要素配列を指定することです。

シェルコマンドは、より詳細な制御を提供する拡張構文もサポートしています。 コマンドは、実行するコマンド、説明、およびstdinstdout 、および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を参照してください。







-anishathalye

執筆者: