kamil1b/git-taxbreak

View on GitHub
src/git_taxbreak/cmd.py

Summary

Maintainability
A
0 mins
Test Coverage
""" Tool for collect artifacts for taxbreak program
@author Kamil Luczak
"""
import sys
from os import getcwd

from git import Repo

from .modules.argument_parser import ArgumentParser
from .modules.artifacts_collector import Collector
from .modules.writer import Writer


def read_user(repo):
    """ Returns  user name read from repository config

    :param repo: repository
    :type repo: git.Repo, mandatory
    :return:
    :rtype: str, None if user name not found
    """
    with repo.config_reader() as reader:
        if "user" in reader.sections():
            return next((v for k, v in reader.items("user") if k == "name"), None)
    return None


def main():
    """ Program main loop """
    try:
        parser = ArgumentParser()
    except TypeError as error:
        print(error)
        sys.exit(1)
    repo = Repo(getcwd(), search_parent_directories=True)
    user = parser.user or read_user(repo)
    artifacts = Collector(
        repo, user, parser.after_date, parser.before_date, parser.unified
    ).artifacts
    with Writer(parser.output) as writer:
        writer.archive(artifacts)