Используя библиотеку python "pre-commit", как я могу добавить ловушку git pre-commit, которая запускает один файл python?

Я использую эту библиотеку, чтобы попытаться добавить в свой проект ловушку перед фиксацией. Это много, и я не думаю, что проверка перед фиксацией, которую я хочу, требует большого объема, используемого в большинстве их примеров. Все, что я хочу сделать, это запустить единственный файл на Python. В зависимости от того, был ли этот файл завершен / завершен без проблем (IE без исключений), это то, что я хочу разрешить или запретить. Я сделал.pre-commit-config.yaml но я не знаю, как заставить его работать только с одним файлом.

Я в основном хочу печатать git commit -m "whatever" для автоматического запуска python myfile.py<- и в зависимости от кода выхода разрешить или запретить фиксацию. есть идеи, как должен выглядеть мой yaml?

Вот что у меня есть на данный момент:

repos:
-   repo: local
    hooks:
    - id: translation-file-check
      name: Check Translation Files Are Aligned
      description: This hook ensures that all translation files share the same set of keys and generates a CSV if there are no issues
      language: python
      entry: "./dir/subdir/myfile.py"

Но я получаю следующую ошибку: .An unexpected error has occurred: OSError: [WinError 193] %1 is not a valid Win32 application Я думаю, потому что он ожидает, что этот файл.py будет.exe или чем-то еще, хотя я установил language на питон...

1 ответ

Решение

Почти ! есть два способа заставить это работать:

  1. добавить "shebang" (#!/usr/bin/env python) в ваш файл
    • хотя shebangs - вещь posix, pre-commit содержит код, который нормализует платформы и заставляет их работать в Windows!
  2. использовать entry: python ./dir/subdir/myfile.py

    repos:
    -   repo: local
        hooks:
        - id: translation-file-check
          name: Check Translation Files Are Aligned
          description: This hook ensures that all translation files share the same set of keys and generates a CSV if there are no issues
          language: python
          entry: python ./dir/subdir/myfile.py
    

(отказ от ответственности: я являюсь автором pre-commit)

Другие вопросы по тегам