From d240563044867f8a14e5962a5794bdad83f0f724 Mon Sep 17 00:00:00 2001 From: Mechanica Date: Wed, 12 Aug 2026 21:41:28 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20CI-=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BD=D0=B0=20pull=20request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pr-checks.yml | 43 ++++++++++++++++++++++++++++++ .gitignore | 2 ++ ruff.toml | 6 +++++ scripts/build_equipment_catalog.py | 3 ++- 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/pr-checks.yml create mode 100644 .gitignore create mode 100644 ruff.toml diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml new file mode 100644 index 0000000..6f45626 --- /dev/null +++ b/.github/workflows/pr-checks.yml @@ -0,0 +1,43 @@ +name: PR checks + +on: + pull_request: + branches: + - main + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v7.0.1 + + - name: Install ruff + run: python3 -m pip install ruff + + - name: Lint scripts + run: ruff check scripts/ + + validate-data: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v7.0.1 + + - name: Install catalog tools + run: python3 -m pip install -r requirements.txt + + - name: Validate chemistry catalog + run: | + python3 scripts/validate_chemistry_catalog.py \ + --catalog data/chemistry-catalog.json + + - name: Validate equipment catalog + run: | + python3 scripts/validate_equipment_catalog.py \ + --catalog data/equipment-catalog.json \ + --index data/equipment-index.json \ + --config config/equipment-sources.yml \ + --sprites data/equipment-sprites diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a60b85 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.pyc diff --git a/ruff.toml b/ruff.toml new file mode 100644 index 0000000..0b46ce0 --- /dev/null +++ b/ruff.toml @@ -0,0 +1,6 @@ +target-version = "py311" + +[lint] +# Только реальные ошибки (неопределённые имена, неиспользуемые импорты/переменные и т.п.), +# без стилистических правил — они не про баги, а про вкус. +select = ["F"] diff --git a/scripts/build_equipment_catalog.py b/scripts/build_equipment_catalog.py index e853fba..db7a41e 100644 --- a/scripts/build_equipment_catalog.py +++ b/scripts/build_equipment_catalog.py @@ -2365,7 +2365,8 @@ def build_public_catalog( if item_id in visited: continue visited.add(item_id) - item = items[item_id] + if item_id not in items: + raise RuntimeError(f"Unknown item id reachable from public roots: {item_id}") public_candidates.add(item_id) # Every configured product and every reachable content item is public. # Boxes/crates are no longer silently replaced with their contents.