#!/usr/bin/env python3 import argparse import sys import pygit2 from flake8.api import legacy as flake8_legacy def fetch_git_files(args): """ Fetches new and modified .py-files using pygit2 """ repo = pygit2.Repository(args.repo_path) status = repo.status() git_files_list = list() if not status: return git_files_list for gfile, state in status.items(): if ( state in (pygit2.GIT_STATUS_WT_MODIFIED, pygit2.GIT_STATUS_WT_NEW, pygit2.GIT_STATUS_INDEX_NEW, pygit2.GIT_STATUS_INDEX_MODIFIED) and gfile.lower().endswith('.py') ): git_files_list.append(gfile) return git_files_list if __name__ == '__main__': parser = argparse.ArgumentParser( description='The following options are available') parser.add_argument( 'repo_path', metavar='REPO', default='.', type=str, help='Git repo path (default: cwd)') parser.add_argument( '--disable-pep8-checks', action='store_true', dest='disable_pep8', default=False, help='Disable pep8 checks') args = parser.parse_args() git_files = fetch_git_files(args) if not git_files: print('No modifications') sys.exit(0) report = flake8_legacy.get_style_guide().check_files(git_files) if report.total_errors: print('Total errors: {errors}'.format(errors=report.total_errors))