Skip to content

Шаблон для расы #11

Шаблон для расы

Шаблон для расы #11

Workflow file for this run

name: "Grammar & Punctuation Check (RU)"
on:
pull_request:
paths:
- '00_Правила_оформления/**/*.md'
- '01_Вселенная/**/*.md'
- '02_Станция/**/*.md'
- '03_Государства/**/*.md'
- '04_Корпорации/**/*.md'
- '05_Организации/**/*.md'
- '06_Расы/**/*.md'
- '07_Существа/**/*.md'
- '08_Технологии/**/*.md'
- '09_Вооружение/**/*.md'
- '10_Явления/**/*.md'
- '11_Товары/**/*.md'
- '12_Другое/**/*.md'
- '13_Истории/**/*.md'
- '14_Повседневность/**/*.md'
- 'README.md'
- 'LICENSE.md'
jobs:
grammar-check:
runs-on: ubuntu-latest
steps:
# 1. Клонируем репозиторий, но с полным fetch
- name: Check out the code
uses: actions/checkout@v3
with:
fetch-depth: 0
# 2. Устанавливаем Java
- name: Set up Java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
# 3. Устанавливаем Pandoc
- name: Install Pandoc
run: |
sudo apt-get update
sudo apt-get install -y pandoc
# 4. Скачиваем LanguageTool (v6.5)
- name: Download LanguageTool
run: |
wget https://languagetool.org/download/LanguageTool-6.5.zip -O lt.zip
unzip lt.zip -d lt
# 5. Отключаем экранирование путей в Git (важно для кириллических файлов!)
- name: Disable Git path quoting
run: git config core.quotepath off
# 6. Собственно проверка .md-файлов
- name: Run grammar check (RU) with Pandoc
id: run_languagetool
run: |
# SHAs для diff
BASE_SHA=${{ github.event.pull_request.base.sha }}
HEAD_SHA=${{ github.event.pull_request.head.sha }}
# Получаем список изменённых .md-файлов
CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRT $BASE_SHA $HEAD_SHA | grep '\.md$' || true)
if [ -z "$CHANGED_FILES" ]; then
echo "No changed .md files to check."
echo "" > grammar_output.txt
exit 0
fi
echo "Changed markdown files:"
echo "$CHANGED_FILES"
# Очищаем/создаём общий файл вывода
rm -f grammar_output.txt
touch grammar_output.txt
for FILE in $CHANGED_FILES; do
echo "--------------------------------" >> grammar_output.txt
echo "Проверка файла: $FILE" >> grammar_output.txt
echo "" >> grammar_output.txt
# 1) MD -> plain text (Pandoc)
pandoc "$FILE" -t plain -o /tmp/conversion.txt
# 2) Запуск LanguageTool CLI
java -jar lt/LanguageTool-6.5/languagetool-commandline.jar \
--language ru \
--mothertongue ru \
/tmp/conversion.txt \
>> grammar_output.txt \
|| true
echo "" >> grammar_output.txt
done
# 7. Публикуем результаты в PR
- name: Create PR comment with suggestions
if: always()
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const path = 'grammar_output.txt';
if (!fs.existsSync(path)) {
core.setOutput('No grammar output file found.');
return;
}
const suggestions = fs.readFileSync(path, 'utf8');
if (!suggestions.trim()) {
core.setOutput('No grammar issues found.');
return;
}
// Ограничение на размер комментария (60к символов)
const maxLength = 60000;
let trimmed = suggestions;
if (trimmed.length > maxLength) {
trimmed = trimmed.substring(0, maxLength) +
"\n\n[...ВЫВОД ОТРЕЗАН ПОСЛЕ 60К СИМВОЛОВ...]";
}
const body = `## LanguageTool (RU) — Проверка грамматики\n\n\`\`\`\n${trimmed}\n\`\`\``;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: body
});