コンテンツにスキップ
Dotweave Dotweave v0.48.0

ディレクトリ構造

dotweaveが設定ファイルと同期データを保存する場所と構成について。

dotweaveが作成するものはすべて1つのアプリデータディレクトリにまとまっています。Linux、macOS、WSLでは$XDG_CONFIG_HOME/dotweaveが既定で、XDG_CONFIG_HOMEが未設定の場合は~/.config/dotweaveを使います。Windowsでは%APPDATA%\dotweaveが既定で、未設定の場合は%LOCALAPPDATA%\dotweave%USERPROFILE%\AppData\Roaming\dotweave、最後にOSホームディレクトリのAppData\Roaming\dotweaveへフォールバックします。


  • ディレクトリ<dotweave-home>/
    • settings.jsonc
    • keys.txt
    • ディレクトリrepository/
      • manifest.jsonc
      • ディレクトリdefault/
        • .gitconfig
        • .zshrc
        • ディレクトリ.config/
          • ディレクトリnvim/
            • init.lua
      • ディレクトリwork/
        • ディレクトリ.config/
          • ディレクトリwork-tool/
            • config.json
        • ディレクトリ.ssh/
          • config.dotweave.secret

DOTWEAVE_HOMEを設定すると、dotweaveだけのアプリデータディレクトリを上書きできます:

DOTWEAVE_HOME=/path/to/dotweave dotweave sync

syncリポジトリは$DOTWEAVE_HOME/repositoryに保存されます。


同期されたファイルを保持するGitリポジトリです。dotweave pushを実行するとファイルがここにコピーされ、dotweave pullを実行するとここからファイルが復元されます。GitHubなどのリモートにpushすることで、マシン間で同期できます。

repository/manifest.jsonc — 設定ファイル

Section titled “repository/manifest.jsonc — 設定ファイル”

設定ファイルはすべての真実の源です。トラッキング中のすべてのファイルとディレクトリが、同期モード、プロファイル、パーミッションなどのオプションとともにリストされています。dotweave trackdotweave untrackコマンドがこのファイルを更新します。

repository/default/ — defaultプロファイルのアーティファクト

Section titled “repository/default/ — defaultプロファイルのアーティファクト”

特定のプロファイルに割り当てられていないファイルはここに保存されます。ほとんどのdotfileはここに配置されます。

repository/<profile>/ — 名前付きプロファイルのアーティファクト

Section titled “repository/<profile>/ — 名前付きプロファイルのアーティファクト”

プロファイルを使用する場合、各プロファイルに専用のサブディレクトリが作られます。例えば、--profile workでトラッキングされたエントリはrepository/work/に保存されます。

シークレットファイルの暗号化と復号に使うageプライベートキーです。dotweave initの実行時に作成され、AGE-SECRET-KEY-で始まります。

アクティブなプロファイルやその他のローカル設定が保存されます。通常は直接編集する必要はなく、dotweave profile use workのようなコマンドが自動的に更新します。


トラッキングエントリが数件ある場合の例です:

{
"version": 7,
"age": {
"recipients": ["age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p"]
},
"entries": [
{
"kind": "file",
"localPath": { "default": "~/.gitconfig" }
},
{
"kind": "directory",
"localPath": { "default": "~/.config/nvim" }
},
{
"kind": "file",
"localPath": { "default": "~/.ssh/config" },
"mode": { "default": "secret" },
"profiles": ["work"]
}
]
}
  • version — スキーマバージョン(現在は7)。dotweaveが自動的に管理します。
  • age — 暗号化設定。recipients配列にはシークレットファイルの暗号化に使用する公開鍵がリストされています。
  • entries — トラッキング中のファイルとディレクトリの一覧。各エントリには以下のフィールドがあります:
    • kind"file"または"directory"
    • localPath — マシン上のファイルの場所(プラットフォーム別パス対応)
    • repoPath — syncディレクトリ内のカスタムパス(省略可。デフォルトではlocalPathから自動生成)
    • mode同期モード"normal""secret""ignore"(省略可。デフォルトは"normal"
    • profiles — このエントリが属するプロファイル(省略可。省略時はグローバル)
    • permission"0600"のような8進数のファイルパーミッション(省略可)