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 に記録し、pushpull がホームディレクトリと同期ディレクトリの間でミラーリングできるようにします。

引数

引数型と既定値用途
targetstring、1 つ以上必須トラッキングするホームディレクトリ配下のローカルファイルまたはディレクトリです。カレントディレクトリからの相対パスや、トラッキング済みディレクトリ内のリポジトリパスも使えます。

フラグ

フラグ型と既定値用途
--kindfile または directory、値 1 つ、なしまだ存在しないパスをトラッキングするときに使うターゲット種別です。
--modemode または platform=mode、繰り返し可、なしトラッキング対象の同期モードです。normalsecretignore のいずれかを指定します。
--permissionoctal または platform=octal、繰り返し可、なし復元するファイル permission です。0600 のような 4 桁の octal 値を指定します。Windows では効果がありません。
--profileprofile、繰り返し可、なし登録済みのプロファイルに同期を限定します。空の値を 1 つだけ渡す --profile "" は、逆に割り当てを消去します。
--repopath または platform=path、繰り返し可、なしプロファイル名前空間配下のリポジトリ相対パスです。ターゲットがちょうど 1 つのときだけ使えます。
--localplatform=path、繰り返し可、なしプラットフォーム別のローカルパス override です。platform= の接頭辞がない値は拒否されます。

boolean フラグには --no- 形式も自動で用意されます。track に boolean フラグはないため、該当するものはありません。

プラットフォーム別フラグの書き方

--mode--permission--repo--localdefaultwinmaclinuxwsl のキーを受け取ります。キーを付けずに値だけを渡すと 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> になります。トラッキング済みディレクトリ内のネストしたパスを調整する方法はこれだけです。

子の項目は親のディレクトリ項目より優先されます。modepermissionprofiles はそれぞれ独立に、最も近い上位の directory 項目から継承されます。そのため mode だけを指定した子の項目は、親の permissionprofiles をそのまま引き継ぎます。

ターゲットはホームディレクトリの内側に解決される必要があり、ホームディレクトリ自体は指定できません。同期ディレクトリと重なるパスや keys.txt を含むパスは指定しないでください。

track が書き込むのは manifest.jsonc だけです。dotweave push を実行するまで、同期ディレクトリへファイルはコピーされません。

エラー

track は、まだ存在しないパスを --kind なしで渡した場合、--kind がディスク上の実際の種別と食い違う場合、確定したローカルパスやリポジトリパスが既存の項目と衝突する場合に失敗します。ターゲットがホームディレクトリの外に出る場合、同期ディレクトリと重なる場合、age identity ファイルを含む場合も失敗します。ターゲットが 1 つでない状態で --repo を使うと REPO_PATH_TARGET_COUNT、未登録のプロファイル名は UNKNOWN_PROFILE で失敗します。各メッセージと対処はエラーメッセージのトラッキング対象の節を参照してください。

関連コマンド

作業手順はファイルとディレクトリのトラッキングを読み、登録前に normalsecretignore のどれを使うか決めるには同期モードを参照してください。