/**
* Verifies the integrity of CLI arguments for backward compatibility with optional flags.
*
* @param {string[]} args The array of command-line arguments.
* @param {object} expectedFlags An object specifying expected optional flags and their values (or null if not present).
* @returns {boolean} True if arguments are valid, false otherwise.
*/
function verifyCLIArgs(args, expectedFlags) {
// Create a map to store the parsed arguments.
const parsedArgs = {};
// Iterate over the arguments.
for (let i = 0; i < args.length; i++) {
const arg = args[i];
// Check for flags.
if (arg.startsWith('--')) {
const flag = arg.substring(2); // Remove the '--' prefix.
if (expectedFlags && expectedFlags.hasOwnProperty(flag)) {
parsedArgs[flag] = arg.substring(arg.indexOf('=') + 1) || true; // Parse flag value, default to true if no value.
} else if (!expectedFlags && !arg.startsWith('--')) {
//Unexpected argument.
return false;
}
} else {
// Assume positional arguments.
parsedArgs[i] = arg;
}
}
// Verify that all expected flags are present and have valid values.
for (const flag in expectedFlags) {
if (expectedFlags.hasOwnProperty(flag)) {
if (!parsedArgs.hasOwnProperty(flag)) {
return false; // Flag is missing.
}
}
}
return true; // All arguments are valid.
}
Add your comment