from api.gitlab_classes import *
from course import Course

if __name__ == '__main__':
    projects = GitlabProject.get_projects_by_group(Course.gitlab_namespace)
    projects = list(filter(lambda p: p.get_name().startswith('30pair'), projects))
    projects.sort(key=lambda p: p.get_name())
    for project in projects:
        commits = project.get_commits()
        print(f'\n\n.    >>>>    {project}    <<<<')
        print(f'{len(commits)} commits on the master branch')
        merges = 0
        reverts = 0
        well_formatted_commits = 0
        malformatted_commits = []
        for commit in commits:
            if commit.is_merge():
                merges += 1
            elif commit.get_message().startswith('Revert'):
                reverts += 1
            elif commit.is_well_formatted():
                well_formatted_commits += 1
            else:
                malformatted_commits.append(commit)
        print(
            f'{merges} merges, {reverts} reverts, {well_formatted_commits} well-formatted commits, '
            f'and {len(malformatted_commits)} malformatted commits')
        for commit in malformatted_commits:
            print(f'{commit.detail_formatting_problems()} ({commit.get_author()})')