Add --base meta-argument to set prev/pend/deltas as subdirs

This commit is contained in:
2026-03-07 01:30:06 +00:00
parent 96e3024991
commit e999fca352
2 changed files with 13 additions and 3 deletions

View File

@@ -12,9 +12,10 @@ Commands:
Options:
--source <path> SOURCE directory (required)
--prev <path> PREV directory (required)
--pend <path> PEND directory (required)
--deltas <path> DELTAS directory (required)
--base <path> Sets --prev, --pend, --deltas as subdirs of base path
--prev <path> PREV directory (default: <base>/previous)
--pend <path> PEND directory (default: <base>/pending)
--deltas <path> DELTAS directory (default: <base>/deltas)
--backend <name> Delta backend: zstd (default), xdelta3
--config <file> 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' },

View File

@@ -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]);