Egonex-AI/Understand-Anything · error
Usage: node prepare-incremental.mjs <projectRoot> <baseCommi
Error message
Usage: node prepare-incremental.mjs <projectRoot> <baseCommit> [--exclude <patterns>]
What it means
parseArgs requires exactly two positional arguments: the project root and the base commit. Any other count (too few or too many) triggers this usage error, which documents the full accepted command line.
Source
Thrown at understand-anything-plugin/skills/understand/prepare-incremental.mjs:469
}
function parseArgs(argv) {
const positionals = [];
const excludePatterns = [];
for (let i = 0; i < argv.length; i++) {
const arg = argv[i];
if (arg === '--exclude') {
const value = argv[++i];
if (!value || value.startsWith('--')) throw new Error('--exclude requires patterns');
excludePatterns.push(...value.split(',').map(item => item.trim()).filter(Boolean));
} else if (arg.startsWith('--')) {
throw new Error(`Unknown option: ${arg}`);
} else {
positionals.push(arg);
}
}
if (positionals.length !== 2) {
throw new Error(
'Usage: node prepare-incremental.mjs <projectRoot> <baseCommit> [--exclude <patterns>]',
);
}
return { projectRoot: positionals[0], baseCommit: positionals[1], excludePatterns };
}
async function main() {
const args = parseArgs(process.argv.slice(2));
const projectRoot = realpathSync(args.projectRoot);
const uaDir = resolveUaDir(projectRoot);
const intermediateDir = join(uaDir, 'intermediate');
mkdirSync(intermediateDir, { recursive: true });
const baseCommit = resolveCommit(projectRoot, args.baseCommit);
const headCommit = resolveCommit(projectRoot, 'HEAD');
const dirtyPaths = relevantWorktreeChanges(projectRoot, args.excludePatterns);
if (dirtyPaths.length > 0) {
const preview = dirtyPaths.slice(0, 10).join(', ');View on GitHub (pinned to 07edf82a04)
Solutions
- Supply exactly two positionals: node prepare-incremental.mjs <projectRoot> <baseCommit>
- Quote the project root if it contains spaces: node prepare-incremental.mjs "/path/with spaces" HEAD
- Use a valid base commit (SHA, branch, or tag) as the second argument
- Confirm the working directory/CI step invokes the script with the intended arguments
Example fix
// before node prepare-incremental.mjs . // after node prepare-incremental.mjs . HEAD~1
Defensive patterns
Strategy: validation
Validate before calling
const positionals = process.argv.slice(2).filter(a => !a.startsWith('--'));
if (positionals.length !== 2) {
console.error('Usage: node prepare-incremental.mjs <projectRoot> <baseCommit> [--exclude <patterns>]');
process.exit(1);
} Try / catch
try {
const parsed = parseArgs(argv);
} catch (err) {
if (err.message.startsWith('Usage:')) {
console.error(err.message);
process.exit(1);
}
throw err;
} Prevention
- Always pass both projectRoot and baseCommit positionals
- Quote project paths containing spaces so the shell yields one positional
- Resolve the base commit (SHA/branch/tag) before invoking the script
When it happens
Trigger: Running the script with zero or one positional argument, or with extra stray positional arguments (e.g. unquoted paths with spaces adding a third positional).
Common situations: Forgetting the baseCommit argument, running the script from a README example with placeholders, or shell word-splitting an unquoted project path containing spaces into multiple positionals.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Usage: node prepare-symbol-retry.mjs <projectRoot>
- Usage: node finalize-incremental.mjs <projectRoot>
- --exclude requires patterns
- Unknown option: ${arg}
- Invalid input: requires { projectRoot: string, sourceFilePat
AI-assisted analysis of Egonex-AI/Understand-Anything@07edf82a04 (2026-09-07).
Data as JSON: /api/errors/bd68c76f6b689dc7.
Report an issue: GitHub.