• David H's avatar
    Got mercurial hook working, with improvements · d1b77726
    David H authored
    This commit fixes a problem that caused "flake8 --install-hook mercurial" to
    die with this message:
    
        Could not find the mercurial directory
    
    Also fixes two usages of configparser (can't supply a non-text value when
    calling .set(), and need to use .getboolean() to convert the value to a
    boolean.)
    
    This commit converts the hook itself from a function hook to a script hook.
    This enables the hook to run even when flake8 is installed in a virtual
    environment and Mercurial is installed globally (a common case.) This also
    makes it possible for flake8 to be installed for Python 3; Mercurial is
    Python 2.x only.
    
    Also convert the hook event from "commit" to "pretxncommit" so that strict
    mode would actually work. A regular commit hook runs only after the commit
    is completed; a pretxncommit hook will cause the transaction to be rolled
    back if it exits with a non-zero code.
    
    Finally, put extensions on the hook names: pretxncommit.flake8 and
    qrefresh.flake8. This allows the flake8 hook to coexist with other hooks the
    user might have put in place.
    
    I tested flake8 mercurial hook installation and execution on both Python 2.7
    and Python 3.5. I did *not* test the qrefresh.flake8 hook. I could not find
    documentation on qrefresh hook event; I presume it has something to do with
    the Mercurial MQ extension, which I have never used. Probably this commit
    does not make it any worse than it was before.
    
    For more info see:
    http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html
    
    Closes #283
    d1b77726
Name
Last commit
Last update
docs Loading commit data...
example-plugin Loading commit data...
src/flake8 Loading commit data...
tests Loading commit data...
.appveyor.yml Loading commit data...
.bandit.yml Loading commit data...
.coveragerc Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
.pylintrc Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.rst Loading commit data...
CONTRIBUTORS.txt Loading commit data...
LICENSE Loading commit data...
MANIFEST.in Loading commit data...
README.rst Loading commit data...
codecov.yml Loading commit data...
dev-requirements.txt Loading commit data...
pytest.ini Loading commit data...
setup.cfg Loading commit data...
setup.py Loading commit data...
tox.ini Loading commit data...