dotweave pull
Materialize sync directory artifacts back onto local paths, decrypting secrets first.
Synopsis
dotweave pull [--dry-run] [--profile <profile>] [--yes] [--with-git]
Read the stored artifacts for the tracked entries and write them back to the resolved local paths under your home directory.
Flags
| Flag | Type and default | Purpose |
|---|---|---|
--dry-run | boolean, manifest or false | Build and print the plan without touching any local path. Use --no-dry-run to override a true manifest default. |
--profile | string, manifest or none | Use one registered profile instead of the active profile from settings.jsonc. |
--yes, -y | boolean, manifest or false | Apply the plan without prompting. Use --no-yes to override a true manifest default. |
--with-git | boolean, manifest or false | Pull from the git remote before building the plan. Use --no-with-git to override a true manifest default. |
Confirmation and non-interactive shells
pull prints the plan first, then asks Apply these changes? [y/N] . Only the answer y proceeds; anything else leaves every local path untouched.
Pass --yes or -y to apply without the prompt. Pass --dry-run to stop after printing the plan.
In a non-interactive terminal without -y, pull fails with Pull confirmation requires an interactive terminal. and hints to re-run with -y. This is the failure a CI job hits, so scripted pulls need the flag.
When nothing differs, pull prints that it is already up to date and returns without prompting.
Command-line flags override the synchronized defaults in manifest.jsonc.
Behavior
Secret artifacts are decrypted with the identity in keys.txt before anything is written.
Every local write is staged in a temporary directory beside the target and then renamed into place, so an interrupted pull cannot leave a half-written file. Stale local paths are deleted deepest-first, and a directory is deleted only when all of its children are already scheduled for deletion.
Entries are applied in batches, grouped so that no two entries in one batch have overlapping local paths.
dotweave pull
· Preparing pull...
~ Planned pull changes
Update from repository (1)
+ /home/you/.config/nvim/init.lua
· Applying pull...
✔ Pull complete
updated: 1 paths updated
removed: 0 paths removed
The plan has two sections. Update from repository (n) lists the paths that will be written, with + bullets. Remove locally (n) lists the paths that will be deleted, with - bullets. A section is omitted when it is empty.
A dry run prints the same plan and stops. Its closing lines are worded as a preview.
~ Pull preview (dry run)
updated: 1 paths would be updated
removed: 0 paths would be removed
pull deletes local files that the repository does not have. Before your first push, every tracked path appears under removal. Run dotweave status or dotweave pull --dry-run first.
Errors
pull fails when the sync directory is not a git work tree and when manifest.jsonc is missing, unreadable, or invalid. It fails when a secret artifact cannot be decrypted with your identity, and when a stored artifact contradicts its entry's kind, for example a file entry that resolves to a directory in the repository. Confirmation in a non-interactive terminal fails as described above. Read Error messages for each message and its fix.
Related commands
Read dotweave status to preview both directions before you apply anything, or Keep several devices in sync for the loop that pairs pull with git on a second machine.