Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if (!_.isEmpty(theme.results.warning)) {
ui.log(chalk.yellow.bold('\nWarnings'));
ui.log(chalk.yellow.bold('--------'));
_.each(theme.results.warning, rule => outputResult(rule, options));
}
if (!_.isEmpty(theme.results.recommendation)) {
ui.log(chalk.yellow.bold('\nRecommendations'));
ui.log(chalk.yellow.bold('---------------'));
_.each(theme.results.recommendation, rule => outputResult(rule, options));
}
ui.log(`\nGet more help at ${chalk.cyan.underline('https://ghost.org/docs/api/handlebars-themes/')}`);
ui.log(`You can also check theme compatibility at ${chalk.cyan.underline('https://gscan.ghost.org/')}`);
// The CLI feature is mainly used to run gscan programatically in tests within themes.
// Exiting with error code for warnings, causes the test to fail, even tho a theme
// upload via Ghost Admin would be possible without showing errors/warning.
// See also here: https://github.com/TryGhost/Blog/pull/41#issuecomment-484525754
// TODO: make failing for warnings configurable by e. g. passing an option, so we can
// disable it for the usage with tests
if (errorCount > 0) {
process.exit(1);
} else {
process.exit(0);
}
}
function outputResult(result) {
ui.log(levels[result.level](`- ${_.capitalize(result.level)}:`), result.rule);
if (options.verbose) {
ui.log(`${chalk.bold('\nDetails:')} ${result.details}`);
}
if (result.failures && result.failures.length) {
if (options.verbose) {
ui.log(''); // extra line-break
ui.log(`${chalk.bold('Files:')}`);
result.failures.forEach((failure) => {
ui.log(`${failure.ref} - ${failure.message}`);
});
} else {
ui.log(`${chalk.bold('Files:')} ${_.map(result.failures, 'ref')}`);
}
}
let errorCount = theme.results.error.length;
ui.log('\n' + getSummary(theme, options));
if (!_.isEmpty(theme.results.error)) {
ui.log(chalk.red.bold('\nErrors'));
ui.log(chalk.red.bold('------'));
ui.log(chalk.red('Important to fix, functionality may be degraded.\n'));
_.each(theme.results.error, rule => outputResult(rule, options));
}
if (!_.isEmpty(theme.results.warning)) {
ui.log(chalk.yellow.bold('\nWarnings'));
ui.log(chalk.yellow.bold('--------'));
_.each(theme.results.warning, rule => outputResult(rule, options));
}
if (!_.isEmpty(theme.results.recommendation)) {
ui.log(chalk.yellow.bold('\nRecommendations'));
ui.log(chalk.yellow.bold('---------------'));
_.each(theme.results.recommendation, rule => outputResult(rule, options));
}
ui.log(`\nGet more help at ${chalk.cyan.underline('https://ghost.org/docs/api/handlebars-themes/')}`);
ui.log(`You can also check theme compatibility at ${chalk.cyan.underline('https://gscan.ghost.org/')}`);
// The CLI feature is mainly used to run gscan programatically in tests within themes.
// Exiting with error code for warnings, causes the test to fail, even tho a theme
function outputResult(result) {
ui.log(levels[result.level](`- ${_.capitalize(result.level)}:`), result.rule);
if (options.verbose) {
ui.log(`${chalk.bold('\nDetails:')} ${result.details}`);
}
if (result.failures && result.failures.length) {
if (options.verbose) {
ui.log(''); // extra line-break
ui.log(`${chalk.bold('Files:')}`);
result.failures.forEach((failure) => {
ui.log(`${failure.ref} - ${failure.message}`);
});
} else {
ui.log(`${chalk.bold('Files:')} ${_.map(result.failures, 'ref')}`);
}
}
ui.log(''); // extra line-break
}
function outputResult(result) {
ui.log(levels[result.level](`- ${_.capitalize(result.level)}:`), result.rule);
if (options.verbose) {
ui.log(`${chalk.bold('\nDetails:')} ${result.details}`);
}
if (result.failures && result.failures.length) {
if (options.verbose) {
ui.log(''); // extra line-break
ui.log(`${chalk.bold('Files:')}`);
result.failures.forEach((failure) => {
ui.log(`${failure.ref} - ${failure.message}`);
});
} else {
ui.log(`${chalk.bold('Files:')} ${_.map(result.failures, 'ref')}`);
}
}
ui.log(''); // extra line-break
}
}, function (err) {
ui.log(err.message);
ui.log('Did you mean to add the -z flag to read a zip file?');
});
}
}, function (err) {
ui.log(err.message);
ui.log('Did you mean to add the -z flag to read a zip file?');
});
}
function outputResults(theme, options) {
try {
theme = gscan.format(theme, options);
} catch (err) {
ui.log.error('Error formating result, some results may be missing.');
ui.log.error(err);
}
let errorCount = theme.results.error.length;
ui.log('\n' + getSummary(theme, options));
if (!_.isEmpty(theme.results.error)) {
ui.log(chalk.red.bold('\nErrors'));
ui.log(chalk.red.bold('------'));
ui.log(chalk.red('Important to fix, functionality may be degraded.\n'));
_.each(theme.results.error, rule => outputResult(rule, options));
}
if (!_.isEmpty(theme.results.warning)) {
ui.log(chalk.yellow.bold('\nWarnings'));
ui.log(chalk.yellow.bold('--------'));
_.each(theme.results.warning, rule => outputResult(rule, options));
}