diff --git a/cli/src/services/formatters/hook-runner.ts b/cli/src/services/formatters/hook-runner.ts index ffd7ba62..0f5d72dc 100644 --- a/cli/src/services/formatters/hook-runner.ts +++ b/cli/src/services/formatters/hook-runner.ts @@ -14,4 +14,16 @@ export default class HookRunnerFomatter { }); console.log(''); } + error(command: string, errors: string[]) { + console.log(chalk.red('⚠ '), chalk.bold(chalk.red(`${command}:`))); + errors.forEach((error) => { + console.log(' ', chalk.red(error)); + }); + console.log(''); + } + success(command: string, message: string) { + console.log(chalk.green('✓ '), chalk.bold(chalk.green(`${command}:`))); + console.log(' ', chalk.green(message)); + console.log(''); +} } diff --git a/cli/src/services/hook-runner.ts b/cli/src/services/hook-runner.ts index cbb0bc19..2f3381e8 100644 --- a/cli/src/services/hook-runner.ts +++ b/cli/src/services/hook-runner.ts @@ -23,9 +23,18 @@ export default class HookRunner { const hooks = this.hooks[name]; if (hooks) { - new Formatter().log(name, hooks); - - hooks.forEach(execSync); + const formatter = new Formatter(); + formatter.log(name, hooks); + + hooks.forEach((hook) => { + try { + const output: string = execSync(hook, {stdio: 'pipe'}).toString(); + formatter.success(hook, output); + } catch (error: any) { + formatter.error(hook, [error.stderr.toString()]); + process.exit(error.status); + } + }); } return this.document.refreshPaths();