---
type: JS Module
title: main.mjs
resource: npm/rules/ga/workflows/main.mjs
docgen:
  crc: ae2ba593
---

## Огляд

Please provide the code you want me to document.

## Поведінка

Поведінка:
checkShellcheckInstalled перевіряє локальну наявність інструменту `shellcheck` у системному PATH, щоб забезпечити узгодженість логіки CI та локального запуску.
main виконує комплексну перевірку відповідності репозиторію правилам `ga.mdc`, включаючи валідацію структури GitHub Actions workflow, аналіз посилань на файли за допомогою `git ls-files` та пошук залишків MegaLinter. При цьому він ігнорує шляхи, що стосуються `.github` та `.git`.
lint запускає стандартний лінтинг, який включає перевірку `actionlint` та `zizmor` для забезпечення якості YAML-файлів та робочого середовища, а також ініціює повну перевірку `main`.
runLintGaCli запускає процес лінтингу `ga` через командний інтерфейс.

## Публічний API

Підтверджую. Я дію як технічний письменник.

Ось переписаний список у вигляді стислих маркерів відповідно до ваших вимог:

- checkShellcheckInstalled — Визначає, чи є інструмент `shellcheck` у системному шляху, щоб уникнути ложного позитивного результату локального линтування, коли CI-оркестр вимагає його присутності.
- main — Валідує відповідність усієї проєктної конфігурації вимогам, визначеним у `ga.mdc`.
- Plan B-патерн — Виконує первинну валідацію структури CI-workflow за допомогою Rego-полісі у `npm/policy/ga/`; додатково проводить крос-файлові перевірки та аналіз конфігурацій (наприклад, для VS Code), ініційовавши цей процес за допомогою `bun run lint-ga`.
- lint — Виконує повноцінний аналіз конфігурацій CI/CD з використанням `actionlint` та `zizmor`.
- runLintGaCli — Запускає повний набір перевірок, що включають Rego-валідацію, аналіз `actionlint` та зовнішні інструменти для забезпечення консистентності конфігурацій проєкту.

## Гарантії поведінки

- Read-only: не виконує операцій запису (ФС/БД).
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
- За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
- Свідомо пропускає шляхи: `.github`, `.git`.
