Skip to content

Свой чекер ​

Чекер — это класс, который наследуется от BaseChecker и проверяет уже стабилизированное состояние проекта. Чекеры запускаются после того, как плагины завершили генерацию, cleanup, запись файлов и все каскадные итерации.

check ​

ts
import fs from 'node:fs';
import path from 'node:path';

import { BaseChecker, type TypeCheckerCheckArgs } from '@arfa-tools/generator';

export class CheckerReadme extends BaseChecker {
  name = 'readme';

  check({ rootDir, checkerError }: TypeCheckerCheckArgs): void {
    const readmePath = path.resolve(rootDir, 'README.md');

    if (fs.existsSync(readmePath)) return;

    checkerError({
      message: 'README.md is required',
      error: new Error(`File not found: ${readmePath}`),
    });
  }
}
ts
rootDir: string

Корневая директория, переданная в FileGenerator

ts
changedFiles: Array<{
  relativePath: string;
  absolutePath: string;
}>

Список уникальных путей файлов, добавленных или изменённых пользователем в watch-режиме либо записанных генератором за все итерации текущего запуска, за исключением удаленных файлов

ts
deletedFiles: Array<{
  relativePath: string;
  absolutePath: string;
}>

Список уникальных путей файлов, удалённых пользователем в watch-режиме либо генератором при cleanup за все итерации текущего запуска

ts
isFullGeneration: boolean

true для полного запуска runFullCycle() и false для инкрементального запуска в watch-режиме

ts
checkerLog: (log: {
  message: string;
}) => void

Функция для регистрации информационных сообщений

ts
checkerError: (log: {
  message: string;
  error: unknown;
}) => void

Функция для регистрации ошибок

Регистрация ошибок ​

Если чекер может найти несколько независимых нарушений, лучше вызвать checkerError для каждого из них и не бросать исключение, чтобы в логах сохранился весь список.

throw можно использовать для инфраструктурных сбоев: ошибки чтения, невозможность запустить внешний инструмент и т.п. FileGenerator перехватит исключение и добавит его в общий результат как ошибку чекера, которая не блокирует следующий чекер или метод afterCheckers.

MIT License