Files
pygitversionhelper/helpers/__main__.py
2023-03-21 23:46:24 +00:00

148 lines
3.9 KiB
Python

# pyChaChaDummyProject (c) by chacha
#
# pyChaChaDummyProject is licensed under a
# Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Unported License.
#
# You should have received a copy of the license along with this
# work. If not, see <https://creativecommons.org/licenses/by-nc-sa/4.0/>.
from __future__ import annotations
from typing import TYPE_CHECKING
from pathlib import Path
import tomli
import argparse
import os
import logging
import sys
if __package__ == "helpers":
# when calling the module from: > python -m helpers
from .types_check import types_check
from .quality_check import quality_check
from .unit_test import unit_test
from .doc_gen import doc_gen
from .changelog_gen import changelog_gen
else:
# when calling the __main__.py file (from IDE)
from helpers.types_check import types_check
from helpers.quality_check import quality_check
from helpers.unit_test import unit_test
from helpers.doc_gen import doc_gen
from helpers.changelog_gen import changelog_gen
logging.getLogger().setLevel(logging.INFO)
if __name__ == "__main__":
project_rootdir_path = Path(__file__).parent.parent.absolute()
with open(project_rootdir_path / "pyproject.toml", mode="rb") as fp:
pyproject = tomli.load(fp)
parser = argparse.ArgumentParser(
prog="continuous-integration-helper",
description="A tiny set of scripts to help continous integration on python",
)
parser.add_argument(
"-tc",
"--type-check",
dest="typecheck",
action="store_true",
help="enable static typing check",
)
parser.add_argument(
"-ut",
"--unit-test",
dest="unittest",
action="store_true",
help="enable unit-test",
)
parser.add_argument(
"-cc",
"--coverage-check",
dest="coveragecheck",
action="store_true",
help="enable unit-test coverage check (requires unit-test)",
)
parser.add_argument(
"-qc",
"--quality-check",
dest="qualitycheck",
action="store_true",
help="enable code quality check",
)
parser.add_argument(
"-dg",
"--doc-gen",
dest="docgen",
action="store_true",
help="enable documentation generation using MkDoc",
)
parser.add_argument(
"-pdf",
"--doc-gen-pdf",
dest="docgenpdf",
action="store_true",
help="enable pdf documentation export (requires doc-gen)",
)
parser.add_argument(
"-clg",
"--changelog-gen",
dest="changeloggen",
action="store_true",
help="enable changelog generation",
)
args = parser.parse_args()
##################################
# Dev / Debug forced toogles
#
# --------------------------------
#
# args.typecheck = True
# args.qualitycheck = True
# args.unittest = True
# args.coveragecheck = True
# args.docgen = True
# args.docgenpdf = True
# args.changeloggen = True
helpers = []
if args.typecheck == True:
helpers.append(types_check)
if args.unittest == True:
helpers.append(unit_test)
if args.coveragecheck == True:
if args.unittest == True:
unit_test.enable_coverage_check = True
else:
raise RuntimeError("unit-test is required to enable coverage-check")
if args.qualitycheck == True:
helpers.append(quality_check)
if args.docgen == True:
helpers.append(doc_gen)
if args.docgenpdf == True:
if args.docgen == True:
doc_gen.enable_gen_pdf = True
else:
raise RuntimeError("doc-gen is required to enable doc-gen-pdf")
if args.changeloggen == True:
helpers.append(changelog_gen)
for helper in helpers:
helper.set_context(project_rootdir_path, pyproject)
helper.reset_result_dir()
helper.do_job()