dda-devops-build/src/main/python/ddadevops/devops_build.py

64 lines
1.9 KiB
Python
Raw Normal View History

2023-03-12 17:40:10 +01:00
import deprecation
2023-03-17 16:05:39 +01:00
from subprocess import run, CalledProcessError
2023-03-14 12:04:52 +01:00
from .domain import Devops
2023-03-12 17:40:10 +01:00
from .infrastructure import ProjectRepository, FileApi
2020-03-03 10:20:18 +01:00
2023-03-14 18:06:04 +01:00
@deprecation.deprecated(deprecated_in="3.2", details="create objects direct instead")
2023-03-05 13:01:50 +01:00
def create_devops_build_config(
stage, project_root_path, module, build_dir_name="target"
):
return {
"stage": stage,
"project_root_path": project_root_path,
"module": module,
"build_dir_name": build_dir_name,
}
2020-03-07 15:07:14 +01:00
def get_devops_build(project):
2023-03-05 13:01:50 +01:00
return project.get_property("devops_build")
2023-03-14 18:06:04 +01:00
2023-03-14 16:11:00 +01:00
@deprecation.deprecated(deprecated_in="3.2")
2023-02-28 09:32:26 +01:00
# TODO: Remove from here!
def get_tag_from_latest_commit():
try:
2023-03-05 13:01:50 +01:00
value = run(
"git describe --abbrev=0 --tags --exact-match",
shell=True,
capture_output=True,
check=True,
)
return value.stdout.decode("UTF-8").rstrip()
2023-02-28 09:32:26 +01:00
except CalledProcessError:
return None
2021-06-25 10:12:43 +02:00
2020-03-03 10:20:18 +01:00
2023-03-05 13:01:50 +01:00
class DevopsBuild:
2023-03-14 16:11:00 +01:00
def __init__(self, project, config: map = None, devops: Devops = None):
2023-03-12 17:40:10 +01:00
self.project = project
self.file_api = FileApi()
self.repo = ProjectRepository()
2023-03-14 16:11:00 +01:00
if not devops:
2023-03-14 18:06:04 +01:00
devops = Devops(
stage=config["stage"],
project_root_path=config["project_root_path"],
module=config["module"],
name=project.name,
build_dir_name=config["build_dir_name"],
)
2023-03-14 16:11:00 +01:00
self.repo.set_devops(self.project, devops)
2023-03-17 16:05:39 +01:00
self.repo.set_build(self.project, self)
2020-03-03 16:34:12 +01:00
2020-03-03 10:20:18 +01:00
def name(self):
2023-03-14 16:11:00 +01:00
devops = self.repo.get_devops(self.project)
return devops.name
2020-03-03 10:20:18 +01:00
def build_path(self):
2023-03-14 16:11:00 +01:00
devops = self.repo.get_devops(self.project)
return devops.build_path()
2020-03-03 10:20:18 +01:00
def initialize_build_dir(self):
2023-03-14 16:11:00 +01:00
devops = self.repo.get_devops(self.project)
self.file_api.clean_dir(devops.build_path())