@domsync/darwin-x64 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +20 -2
  2. package/domsync +0 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -153,7 +153,7 @@ Within each section, patterns are sorted; section order is otherwise preserved;
153
153
 
154
154
  A missing local file is treated as an empty list, so the first run bootstraps the local snapshot from the provider file: every provider-only domain is adopted and written locally. An empty local file with an empty provider file is a no-op. A plan whose final list would be empty while the provider file is not is an error: domsync refuses to wipe the provider file.
155
155
 
156
- Concurrent runs are refused. A run holds an exclusive lock on `<config-path>.domsync.lock` next to the config file from the moment the configuration is loaded until every write and post-write command has finished, so a cron job and a manual run cannot interleave their reads and writes. One lock covers the whole config, so two different configs can run at the same time. The lock file stays on disk after the run; the lock itself is released by the operating system when the process exits, including after a crash.
156
+ Concurrent runs are refused. A run holds an exclusive lock on a hidden `.<name>.lock` file next to the config, where `<name>` is the config file name without its extension, from the moment the configuration is loaded until every write and post-write command has finished, so a cron job and a manual run cannot interleave their reads and writes. For `domsync.yaml` that file is `.domsync.lock`; two configs with different file names get different locks and can run at the same time. On Windows the file is also marked with the hidden attribute, since a leading dot alone does not hide it there. The lock file stays on disk after the run; the lock itself is released by the operating system when the process exits, including after a crash.
157
157
 
158
158
  ### Provider file validation
159
159
 
@@ -240,7 +240,7 @@ With `--json` the output is one object with `ok` and `servers`; each server carr
240
240
  | `1` | Usage or configuration error, local file read/write error, log write error, or another run holding the config lock. |
241
241
  | `2` | Validation error in a local list or a provider file, including `--strict` warnings, and an empty final list. |
242
242
  | `3` | SSH connection, authentication, host-key or remote read/write/verify error. |
243
- | `4` | Update error, including the Homebrew/npm refusal. |
243
+ | `4` | Update error, including the Homebrew/npm refusal; uninstall cancelled or left to a package manager. |
244
244
  | `5` | A post-write command failed (non-zero exit or transport error). |
245
245
 
246
246
  When several things fail, the exit code is the code of the first failure in execution order: server order, then file order. A server that cannot be dialled counts at its own position, before its pairs, so a connection error beats a later pair failure. A failure in one pair or one server never stops the rest.
@@ -275,6 +275,24 @@ domsync установлен через npm. Обновление: npm i -g @dom
275
275
 
276
276
  So update those installs with `brew upgrade --cask domsync` or `npm i -g @domsync/cli@latest`. The same refusal applies to `domsync update --check`, because install detection happens first. A standalone binary is replaced atomically after its archive has been checked against `checksums.txt`.
277
277
 
278
+ ## Uninstall
279
+
280
+ `domsync uninstall` removes what the installation created: the binary and the cache directory (`os.UserCacheDir()/domsync`, which holds the update cache). It never touches your config, domain lists or log file.
281
+
282
+ ```sh
283
+ domsync uninstall # asks: Удалить domsync и созданные им файлы? [y/N]
284
+ domsync uninstall --yes # no question, for scripts
285
+ domsync --dry-run uninstall # print what would be removed and change nothing
286
+ ```
287
+
288
+ Enter, or anything other than `y`, `yes`, `д` or `да`, cancels and exits with code 4. Without a terminal the question cannot be asked, so `--yes` is required.
289
+
290
+ The install method is detected the same way as for updates. Homebrew and npm installs are removed through the package manager: domsync runs `brew uninstall --cask --zap domsync` or `npm uninstall -g @domsync/cli` itself and then removes the cache directory. The cask declares a `zap` stanza for that directory, so `brew uninstall --cask --zap domsync` is just as complete without this command. On Windows a running npm package cannot delete itself, so the command prints the npm command and exits 4; the same happens when `brew` or `npm` is not on `PATH`, except the cache directory is still removed.
291
+
292
+ The empty hidden `.<name>.lock` beside a config (`.domsync.lock` for `domsync.yaml`) is a run lock, not an install artifact; it goes away with the config.
293
+
294
+ With `--json` the output is the usual envelope, with `removed` listing the paths and `dry_run` set for `--dry-run`.
295
+
278
296
  ## Output
279
297
 
280
298
  The default human report is Russian and looks like this for a run that changed one pair:
package/domsync CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domsync/darwin-x64",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "packageManager": "npm@11.5.1+sha512.232e6f5d9e799bcb486920b3e9ba907fdf96e576cf7e8c9446c8162e33a416096a1d37a9e910d9a918f6b1f606791c99bc6bb61ee2569b496ec74af13d0dbd95",
5
5
  "os": "darwin",
6
6
  "cpu": "x64",