From be979a3bf144fca8bc09a48bdbee13ad6465f8cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B3=BD=E5=AE=87?= Date: Fri, 5 Jun 2026 11:50:23 +0800 Subject: [PATCH] fix(cli): respect mirror positional arg before --vault flag Per vrtmrz's review feedback, restore the mirror [vault-path] positional argument support with correct priority order: mirror positional arg > --vault flag > databasePath Also update --vault help text and CLI README with the new option. --- src/apps/cli/README.md | 7 ++++++- src/apps/cli/main.ts | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/apps/cli/README.md b/src/apps/cli/README.md index 18f70b7..7adc18c 100644 --- a/src/apps/cli/README.md +++ b/src/apps/cli/README.md @@ -61,6 +61,9 @@ livesync-cli [database-path] [command] [args...] - `database-path`: Path to the directory where `.livesync` folder and `settings.json` are (or will be) located. - Note: In previous versions, this was referred to as the "vault" path. Now it is clearly distinguished from the actual vault (the directory containing your `.md` files). +- `--vault ` / `-V `: (daemon/mirror only) Path to the vault directory containing `.md` files. + - Allows the PouchDB database directory and the actual vault directory to be different locations. + - For `mirror` command, the positional `[vault-path]` argument takes precedence over `--vault`. ### Commands @@ -312,6 +315,7 @@ Options: --verbose, -v Enable verbose logging --debug, -d Enable debug logging (includes verbose) --interval , -i (daemon only) Poll CouchDB every N seconds instead of using the _changes feed + --vault , -V (daemon/mirror) Path to vault directory, decoupled from database-path --help, -h Show this help message Commands: @@ -332,7 +336,8 @@ Commands: info Show file metadata including current and past revisions, conflicts, and chunk list rm Mark file as deleted in local database resolve Resolve conflict by keeping the specified revision - mirror [vaultPath] Mirror database contents to the local file system (vaultPath defaults to database-path) + mirror [vaultPath] Mirror database contents to the local file system + (vaultPath positional arg > --vault flag > database-path) ``` Run via npm script: diff --git a/src/apps/cli/main.ts b/src/apps/cli/main.ts index 44ba4e8..093b8f5 100644 --- a/src/apps/cli/main.ts +++ b/src/apps/cli/main.ts @@ -304,11 +304,17 @@ export async function main() { : path.join(databasePath, SETTINGS_FILE); configureNodeLocalStorage(path.join(databasePath, ".livesync", "runtime", "local-storage.json")); - // Resolve vault path: --vault flag takes priority, otherwise fall back to databasePath + // Resolve vault path: mirror positional argument takes priority, + // then --vault flag, otherwise fall back to databasePath. // For daemon mode, enable chokidar file watching so the _changes feed picks up events. // mirror runs a single full scan and doesn't need continuous watching. const watchEnabled = options.command === "daemon"; - const vaultPath = options.vaultPath ? path.resolve(options.vaultPath) : databasePath!; + const vaultPath = + options.command === "mirror" && options.commandArgs[0] + ? path.resolve(options.commandArgs[0]) + : options.vaultPath + ? path.resolve(options.vaultPath) + : databasePath!; infoLog(`Self-hosted LiveSync CLI`); infoLog(`Database Path: ${databasePath}`);