From e999fca352558dd9917b795d54e2413fdbea70ca Mon Sep 17 00:00:00 2001 From: mikael-lovqvists-claude-agent Date: Sat, 7 Mar 2026 01:30:06 +0000 Subject: [PATCH] Add --base meta-argument to set prev/pend/deltas as subdirs --- lib/args.js | 8 +++++--- lib/config.js | 8 ++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/args.js b/lib/args.js index 057b71e..1184435 100644 --- a/lib/args.js +++ b/lib/args.js @@ -12,9 +12,10 @@ Commands: Options: --source SOURCE directory (required) - --prev PREV directory (required) - --pend PEND directory (required) - --deltas DELTAS directory (required) + --base Sets --prev, --pend, --deltas as subdirs of base path + --prev PREV directory (default: /previous) + --pend PEND directory (default: /pending) + --deltas DELTAS directory (default: /deltas) --backend Delta backend: zstd (default), xdelta3 --config Load options from JSON config file (flags override) --dry-run Print what would happen, execute nothing @@ -26,6 +27,7 @@ export function parseArgs(argv) { args: argv, options: { source: { type: 'string' }, + base: { type: 'string' }, prev: { type: 'string' }, pend: { type: 'string' }, deltas: { type: 'string' }, diff --git a/lib/config.js b/lib/config.js index d43adc3..6fb9ecb 100644 --- a/lib/config.js +++ b/lib/config.js @@ -3,6 +3,7 @@ * CLI args always win. Required paths are validated here. */ import { readFile } from 'fs/promises'; +import { join } from 'path'; const REQUIRED_PATHS = ['source', 'prev', 'pend', 'deltas']; const DEFAULTS = { @@ -25,6 +26,13 @@ export async function loadConfig(args) { // CLI args override file config, file config overrides defaults const config = { ...DEFAULTS, ...fileConfig, ...filterDefined(args) }; + // Expand --base into --prev/--pend/--deltas, explicit flags take priority + if (config.base) { + config.prev ??= join(config.base, 'previous'); + config.pend ??= join(config.base, 'pending'); + config.deltas ??= join(config.base, 'deltas'); + } + // Guard: refuse to run if any required path is missing if (config.command === 'run') { const missing = REQUIRED_PATHS.filter(k => !config[k]);