Используя предварительную фиксацию библиотеки Python, как я могу добавить ловушку предварительной фиксации git, которая запускает один файл 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 на python ...


person Rosey    schedule 18.11.2019    source источник


Ответы (1)


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

  1. add a "shebang" (#!/usr/bin/env python) to your file
    • even though shebangs are a posix thing, pre-commit contains code which normalizes platforms and makes them work on windows as well!
  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)

person Anthony Sottile    schedule 18.11.2019
comment
Оба ответа сработали! Благодарность! Теперь я получаю ошибки «Модуль не найден», потому что я никогда не пытался запустить этот .py-файл из другого каталога, но поскольку это скорее проблема с питоном, я собираюсь принять ваш ответ. - person Rosey; 18.11.2019