48 lines
1.5 KiB
JavaScript
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();
|