rock
Version:
Command-line interface for Rock - a React Native development toolkit
60 lines • 2.55 kB
JavaScript
import { color, logger } from '@rock-js/tools';
const npxBin = 'npx rock';
const checkDeprecatedCommand = (argv, oldCmd, newCmd, deprecatedFlags) => {
if (argv.includes(oldCmd)) {
const args = argv.slice(argv.indexOf(oldCmd) + 1);
const formattedFlags = getFormattedFlagsArray(deprecatedFlags, args);
logger.error(`The "${oldCmd}" command was renamed to "${newCmd}".`);
logFlagsAndCommand(formattedFlags, newCmd, args, deprecatedFlags);
process.exit(1);
}
};
const checkCurrentCommand = (argv, cmd, deprecatedFlags) => {
if (argv.includes(cmd)) {
const args = argv.slice(argv.indexOf(cmd) + 1);
const formattedFlags = getFormattedFlagsArray(deprecatedFlags, args);
if (formattedFlags.length > 0) {
logFlagsAndCommand(formattedFlags, cmd, args, deprecatedFlags);
process.exit(1);
}
}
};
function getFormattedFlagsArray(flags, args) {
return flags
.map(({ old, new: newFlag }) => args.includes(old)
? `• "${color.bold(old)}" changed to "${color.bold(newFlag)}"`
: undefined)
.filter(Boolean);
}
function logFlagsAndCommand(formattedFlags, cmd, args, deprecatedFlags) {
if (formattedFlags.length > 0) {
logger.error(`Found deprecated flags:
${formattedFlags.join('\n')}`);
}
const newArgs = args.map((arg) => {
const newFlag = deprecatedFlags.find((flag) => arg === flag.old);
return newFlag ? newFlag.new : arg;
});
logger.error(`Use new command${formattedFlags ? ' with new flags' : ''}:
${color.bold(npxBin)} ${color.bold(cmd)} ${color.bold(newArgs.join(' '))}`);
}
const deprecatedAndroidFlags = [
{ old: '--mode', new: '--variant' },
{ old: '--appId', new: '--app-id' },
{ old: '--appIdSuffix', new: '--app-id-suffix' },
{ old: '--no-remote-cache', new: '--local' },
];
const deprecatedIosFlags = [
{ old: '--mode', new: '--configuration' },
{ old: '--buildFolder', new: '--build-folder' },
{ old: '--no-remote-cache', new: '--local' },
];
export const checkDeprecatedOptions = (argv) => {
// Check deprecated commands
checkDeprecatedCommand(argv, 'run-android', 'run:android', deprecatedAndroidFlags);
checkDeprecatedCommand(argv, 'run-ios', 'run:ios', deprecatedIosFlags);
// Check current commands for deprecated flags
checkCurrentCommand(argv, 'run:android', deprecatedAndroidFlags);
checkCurrentCommand(argv, 'run:ios', deprecatedIosFlags);
};
//# sourceMappingURL=checkDeprecatedOptions.js.map