mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-14 10:34:06 +02:00
chore(ci): refine pre-commit workflows, add TOML sorting (#5648)
# Description of Changes This pull request introduces several improvements to pre-commit configuration and automation, enhances error handling in scripts, and updates dependencies and exclusions for code quality tools. The main changes are grouped below: **Pre-commit and CI workflow improvements:** * The pre-commit workflow in `.github/workflows/pre_commit.yml` now runs specific hooks (`ruff`, `ruff-format`, `codespell`, `gitleaks`, `end-of-file-fixer`, `trailing-whitespace`) individually instead of running all hooks at once, providing more granular feedback. * The sync files workflow in `.github/workflows/sync_files_v2.yml` now installs pre-commit dependencies and runs the `toml-sort-fix` hook to ensure TOML files are consistently sorted. * Added the `toml-sort-fix` hook from the `toml-sort` repository to `.pre-commit-config.yaml` for sorting TOML files in the locales directory. **Pre-commit configuration and dependency updates:** * Updated the `ruff-pre-commit` repository version from `v0.14.8` to `v0.14.14` in `.pre-commit-config.yaml`. * Updated the `codespell` hook to expand the ignore words list and to exclude the `frontend/public/vendor` directory. **Script improvements and error handling:** * Replaced bare `except:` clauses with `except Exception:` in `scripts/convert_cff_to_ttf.py` for safer error handling. [[1]](diffhunk://#diff-8c68a22370903bb52267848deaf7298604704c59292650d9dfc1d1975fa8bc53L194-R194) [[2]](diffhunk://#diff-8c68a22370903bb52267848deaf7298604704c59292650d9dfc1d1975fa8bc53L318-R325) * Minor code cleanup in translation validation scripts by removing unused variables. [[1]](diffhunk://#diff-2399f964d817f2e61b818c3f6543ebce9e230778b35ab62bc8578cb7cc9da99eL124) [[2]](diffhunk://#diff-3b83f838d72dce860ff1f7b24a033f02134aaac3d7abdf061d72c1c21943f896L117) * Removed unused `progress` variable assignment in `scripts/counter_translation_v3.py` for clarity. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details.
This commit is contained in:
@@ -48,7 +48,14 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
pip install --require-hashes --only-binary=:all: -r ./.github/scripts/requirements_pre_commit.txt
|
pip install --require-hashes --only-binary=:all: -r ./.github/scripts/requirements_pre_commit.txt
|
||||||
|
|
||||||
- run: pre-commit run --all-files -c .pre-commit-config.yaml
|
- name: Run Pre-Commit
|
||||||
|
run: |
|
||||||
|
pre-commit run ruff --all-files -c .pre-commit-config.yaml
|
||||||
|
pre-commit run ruff-format --all-files -c .pre-commit-config.yaml
|
||||||
|
pre-commit run codespell --all-files -c .pre-commit-config.yaml
|
||||||
|
pre-commit run gitleaks --all-files -c .pre-commit-config.yaml
|
||||||
|
pre-commit run end-of-file-fixer --all-files -c .pre-commit-config.yaml
|
||||||
|
pre-commit run trailing-whitespace --all-files -c .pre-commit-config.yaml
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Set up JDK 21
|
- name: Set up JDK 21
|
||||||
|
|||||||
@@ -55,12 +55,16 @@ jobs:
|
|||||||
cache: "pip" # caching pip dependencies
|
cache: "pip" # caching pip dependencies
|
||||||
|
|
||||||
- name: Install Python dependencies
|
- name: Install Python dependencies
|
||||||
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt
|
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt -r ./.github/scripts/requirements_pre_commit.txt
|
||||||
|
|
||||||
- name: Sync translation TOML files
|
- name: Sync translation TOML files
|
||||||
run: |
|
run: |
|
||||||
python .github/scripts/check_language_toml.py --reference-file "frontend/public/locales/en-GB/translation.toml" --branch main
|
python .github/scripts/check_language_toml.py --reference-file "frontend/public/locales/en-GB/translation.toml" --branch main
|
||||||
|
|
||||||
|
- name: pre-commit run
|
||||||
|
run: |
|
||||||
|
pre-commit run toml-sort-fix --all-files
|
||||||
|
|
||||||
- name: Commit translation files
|
- name: Commit translation files
|
||||||
run: |
|
run: |
|
||||||
git add frontend/public/locales/*/translation.toml
|
git add frontend/public/locales/*/translation.toml
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.14.8
|
rev: v0.14.14
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
args:
|
args:
|
||||||
@@ -16,11 +16,11 @@ repos:
|
|||||||
hooks:
|
hooks:
|
||||||
- id: codespell
|
- id: codespell
|
||||||
args:
|
args:
|
||||||
- --ignore-words-list=thirdParty,tabEl,tabEls
|
- --ignore-words-list=thirdParty,tabEl,tabEls,Sie,ist
|
||||||
- --skip="./.*,*.csv,*.json,*.ambr"
|
- --skip="./.*,*.csv,*.json,*.ambr"
|
||||||
- --quiet-level=2
|
- --quiet-level=2
|
||||||
files: \.(html|css|js|py|md)$
|
files: \.(html|css|js|py|md)$
|
||||||
exclude: (.vscode|.devcontainer|app/core/src/main/resources|app/proprietary/src/main/resources|Dockerfile|.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js)
|
exclude: (.vscode|.devcontainer|app/core/src/main/resources|app/proprietary/src/main/resources|frontend/public/vendor|Dockerfile|.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js)
|
||||||
- repo: https://github.com/gitleaks/gitleaks
|
- repo: https://github.com/gitleaks/gitleaks
|
||||||
rev: v8.30.0
|
rev: v8.30.0
|
||||||
hooks:
|
hooks:
|
||||||
@@ -34,6 +34,12 @@ repos:
|
|||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
files: ^.*(\.js|\.java|\.py|\.yml)$
|
files: ^.*(\.js|\.java|\.py|\.yml)$
|
||||||
exclude: ^(.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js|\.github/workflows/.*$)
|
exclude: ^(.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js|\.github/workflows/.*$)
|
||||||
|
- repo: https://github.com/pappasam/toml-sort
|
||||||
|
rev: v0.24.3
|
||||||
|
hooks:
|
||||||
|
- id: toml-sort-fix
|
||||||
|
files: frontend/public/locales/.*\.toml$
|
||||||
|
args: ['--in-place', '--all', '--ignore-case']
|
||||||
# - repo: https://github.com/thibaudcolas/pre-commit-stylelint
|
# - repo: https://github.com/thibaudcolas/pre-commit-stylelint
|
||||||
# rev: v16.21.1
|
# rev: v16.21.1
|
||||||
# hooks:
|
# hooks:
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ def wrap_cff_as_otf(input_path, output_path, tounicode_path=None):
|
|||||||
min_lsb = min(min_lsb, lsb)
|
min_lsb = min(min_lsb, lsb)
|
||||||
min_rsb = min(min_rsb, rsb)
|
min_rsb = min(min_rsb, rsb)
|
||||||
max_extent = max(max_extent, extent)
|
max_extent = max(max_extent, extent)
|
||||||
except:
|
except Exception:
|
||||||
pass # Some glyphs may not have outlines
|
pass # Some glyphs may not have outlines
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -315,14 +315,14 @@ def wrap_cff_as_otf(input_path, output_path, tounicode_path=None):
|
|||||||
unicode_val = int(glyph_name[3:], 16)
|
unicode_val = int(glyph_name[3:], 16)
|
||||||
if unicode_val not in unicode_to_glyph:
|
if unicode_val not in unicode_to_glyph:
|
||||||
unicode_to_glyph[unicode_val] = glyph_name
|
unicode_to_glyph[unicode_val] = glyph_name
|
||||||
except:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
elif glyph_name.startswith("u") and len(glyph_name) >= 5:
|
elif glyph_name.startswith("u") and len(glyph_name) >= 5:
|
||||||
try:
|
try:
|
||||||
unicode_val = int(glyph_name[1:], 16)
|
unicode_val = int(glyph_name[1:], 16)
|
||||||
if unicode_val not in unicode_to_glyph:
|
if unicode_val not in unicode_to_glyph:
|
||||||
unicode_to_glyph[unicode_val] = glyph_name
|
unicode_to_glyph[unicode_val] = glyph_name
|
||||||
except:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# === Create cmap table ===
|
# === Create cmap table ===
|
||||||
|
|||||||
@@ -399,9 +399,7 @@ def main() -> None:
|
|||||||
|
|
||||||
# Default behavior (no --lang): process all and update README
|
# Default behavior (no --lang): process all and update README
|
||||||
messages_file_paths = glob.glob(os.path.join(locales_dir, "*", "translation.toml"))
|
messages_file_paths = glob.glob(os.path.join(locales_dir, "*", "translation.toml"))
|
||||||
progress = compare_files(
|
compare_files(reference_file, messages_file_paths, translation_state_file)
|
||||||
reference_file, messages_file_paths, translation_state_file
|
|
||||||
)
|
|
||||||
# write_readme(progress)
|
# write_readme(progress)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,6 @@ def main():
|
|||||||
# Define paths
|
# Define paths
|
||||||
locales_dir = Path("frontend/public/locales")
|
locales_dir = Path("frontend/public/locales")
|
||||||
en_gb_path = locales_dir / "en-GB" / "translation.toml"
|
en_gb_path = locales_dir / "en-GB" / "translation.toml"
|
||||||
file_ext = ".toml"
|
|
||||||
|
|
||||||
if not en_gb_path.exists():
|
if not en_gb_path.exists():
|
||||||
print(f"❌ Error: en-GB translation file not found at {en_gb_path}")
|
print(f"❌ Error: en-GB translation file not found at {en_gb_path}")
|
||||||
|
|||||||
@@ -114,7 +114,6 @@ def main():
|
|||||||
# Define paths
|
# Define paths
|
||||||
locales_dir = Path("frontend/public/locales")
|
locales_dir = Path("frontend/public/locales")
|
||||||
en_gb_path = locales_dir / "en-GB" / "translation.toml"
|
en_gb_path = locales_dir / "en-GB" / "translation.toml"
|
||||||
file_ext = ".toml"
|
|
||||||
|
|
||||||
if not en_gb_path.exists():
|
if not en_gb_path.exists():
|
||||||
print(f"❌ Error: en-GB translation file not found at {en_gb_path}")
|
print(f"❌ Error: en-GB translation file not found at {en_gb_path}")
|
||||||
|
|||||||
Reference in New Issue
Block a user