reactwizard/pre-files/lint-check.js
2024-08-12 22:57:35 -04:00

48 lines
1.5 KiB
JavaScript

const { exec, execSync } = require('child_process');
const { promises: fs } = require('fs');
const chalk = require('chalk');
async function runCommand(command, description) {
// Dynamically import the ES Module
const ora = (await import('ora')).default;
const spinner = ora(`Running ${description}...`).start();
return new Promise((resolve, reject) => {
exec(command, (error, stdout, stderr) => {
if (error) {
spinner.fail(`${description} failed.`);
console.error(chalk.red(`${description} failed.`));
console.error(chalk.red(stderr));
reject(new Error(stderr));
} else {
spinner.succeed(`${description} passed.`);
console.log(chalk.green(`${description} passed.`));
console.log(stdout);
resolve();
}
});
});
}
async function runLint() {
try {
await runCommand('npm run lint:prettier', 'Prettier check');
//await runCommand('yarn lint:html', 'ESLint HTML report');
console.log(chalk.green('🎉 All checks passed.'));
process.exit(0);
} catch (err) {
console.error(chalk.red('❌ Lint checks failed.'));
console.error(chalk.red('😢 Oh no! Your code is not pretty enough.'));
console.error(chalk.red('Please fix the issues above and try again.'));
console.error(
chalk.yellow(
`💡 Hint: You can run ${chalk.cyan('yarn prettier')} to automatically format your code.`
)
);
process.exit(1);
}
}
runLint();