dotweave track
ローカルのファイルやディレクトリを登録し、プラットフォームごとの同期モード、permission、パス、プロファイルを指定します。
使い方
dotweave track [--kind file|directory] [--mode mode|platform=mode]... [--permission octal|platform=octal]... [--profile profile]... [--local platform=path]... [--repo path|platform=path]... <target>...
ファイルやディレクトリを manifest.jsonc に記録し、push と pull がホームディレクトリと同期ディレクトリの間でミラーリングできるようにします。
引数
| 引数 | 型と既定値 | 用途 |
|---|---|---|
target | string、1 つ以上必須 | トラッキングするホームディレクトリ配下のローカルファイルまたはディレクトリです。カレントディレクトリからの相対パスや、トラッキング済みディレクトリ内のリポジトリパスも使えます。 |
フラグ
| フラグ | 型と既定値 | 用途 |
|---|---|---|
--kind | file または directory、値 1 つ、なし | まだ存在しないパスをトラッキングするときに使うターゲット種別です。 |
--mode | mode または platform=mode、繰り返し可、なし | トラッキング対象の同期モードです。normal、secret、ignore のいずれかを指定します。 |
--permission | octal または platform=octal、繰り返し可、なし | 復元するファイル permission です。0600 のような 4 桁の octal 値を指定します。Windows では効果がありません。 |
--profile | profile、繰り返し可、なし | 登録済みのプロファイルに同期を限定します。空の値を 1 つだけ渡す --profile "" は、逆に割り当てを消去します。 |
--repo | path または platform=path、繰り返し可、なし | プロファイル名前空間配下のリポジトリ相対パスです。ターゲットがちょうど 1 つのときだけ使えます。 |
--local | platform=path、繰り返し可、なし | プラットフォーム別のローカルパス override です。platform= の接頭辞がない値は拒否されます。 |
boolean フラグには --no- 形式も自動で用意されます。track に boolean フラグはないため、該当するものはありません。
プラットフォーム別フラグの書き方
--mode、--permission、--repo、--local は default、win、mac、linux、wsl のキーを受け取ります。キーを付けずに値だけを渡すと default に入るので、--mode secret と --mode default=secret は同じ意味です。
--mode normal --mode win=ignore のようにフラグを繰り返せば、複数のプラットフォームを一度に指定できます。1 つのフラグで同じキーを繰り返すと DUPLICATE_PLATFORM_FLAG で失敗し、認識できないキーは INVALID_PLATFORM_FLAG で失敗します。--local はキーの明示が必要で、--permission を使う場合は default の値が必ず必要です。
動作
新しいパスをトラッキングすると、manifest.jsonc に項目を 1 つ追加し、確定したフィールドを表示します。
dotweave track ~/.gitconfig
✔ Started tracking .gitconfig
kind file
path /home/you/.gitconfig
repo .gitconfig
mode normal
値を指定したフラグが増えると、出力のキー列もその分だけ広がります。
dotweave track ~/.ssh/config --mode secret --permission 0600
✔ Started tracking .ssh/config
kind file
path /home/you/.ssh/config
repo .ssh/config
mode secret
permission 0600
すでにトラッキング中のパスに対して track をもう一度実行すると、指定したフィールドだけを更新し、残りは保持します。そのため dotweave track ~/.ssh/config --profile work を実行しても、先に設定した mode と permission はそのまま残ります。
ターゲットが manifest の既存項目ではなく、--repo も渡していない場合、track はトラッキング済みディレクトリ内のネストしたパスに同期モードやプロファイルを設定し、子の override 項目を作成します。このとき出力は Updated sync mode for <path> または Sync mode unchanged for <path> になります。トラッキング済みディレクトリ内のネストしたパスを調整する方法はこれだけです。
子の項目は親のディレクトリ項目より優先されます。mode、permission、profiles はそれぞれ独立に、最も近い上位の directory 項目から継承されます。そのため mode だけを指定した子の項目は、親の permission と profiles をそのまま引き継ぎます。
ターゲットはホームディレクトリの内側に解決される必要があり、ホームディレクトリ自体は指定できません。同期ディレクトリと重なるパスや keys.txt を含むパスは指定しないでください。
track が書き込むのは manifest.jsonc だけです。dotweave push を実行するまで、同期ディレクトリへファイルはコピーされません。
エラー
track は、まだ存在しないパスを --kind なしで渡した場合、--kind がディスク上の実際の種別と食い違う場合、確定したローカルパスやリポジトリパスが既存の項目と衝突する場合に失敗します。ターゲットがホームディレクトリの外に出る場合、同期ディレクトリと重なる場合、age identity ファイルを含む場合も失敗します。ターゲットが 1 つでない状態で --repo を使うと REPO_PATH_TARGET_COUNT、未登録のプロファイル名は UNKNOWN_PROFILE で失敗します。各メッセージと対処はエラーメッセージのトラッキング対象の節を参照してください。
関連コマンド
作業手順はファイルとディレクトリのトラッキングを読み、登録前に normal、secret、ignore のどれを使うか決めるには同期モードを参照してください。