ScriptCollection 3.5.3__py3-none-any.whl → 3.5.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ScriptCollection/ProcessesRunner.py +41 -0
- ScriptCollection/RPStream.py +42 -0
- ScriptCollection/ScriptCollectionCore.py +137 -224
- ScriptCollection/TasksForCommonProjectStructure.py +121 -74
- ScriptCollection/UpdateCertificates.py +2 -2
- {ScriptCollection-3.5.3.dist-info → ScriptCollection-3.5.4.dist-info}/METADATA +2 -1
- ScriptCollection-3.5.4.dist-info/RECORD +16 -0
- {ScriptCollection-3.5.3.dist-info → ScriptCollection-3.5.4.dist-info}/WHEEL +1 -1
- ScriptCollection-3.5.3.dist-info/RECORD +0 -14
- {ScriptCollection-3.5.3.dist-info → ScriptCollection-3.5.4.dist-info}/entry_points.txt +0 -0
- {ScriptCollection-3.5.3.dist-info → ScriptCollection-3.5.4.dist-info}/top_level.txt +0 -0
|
@@ -21,6 +21,7 @@ from .GeneralUtilities import GeneralUtilities
|
|
|
21
21
|
from .ScriptCollectionCore import ScriptCollectionCore
|
|
22
22
|
from .ProgramRunnerEpew import ProgramRunnerEpew
|
|
23
23
|
|
|
24
|
+
|
|
24
25
|
class CreateReleaseConfiguration():
|
|
25
26
|
projectname: str
|
|
26
27
|
remotename: str
|
|
@@ -232,8 +233,7 @@ class TasksForCommonProjectStructure:
|
|
|
232
233
|
for target in targets:
|
|
233
234
|
GeneralUtilities.write_message_to_stdout(f"Build package {package_name} for target {target}...")
|
|
234
235
|
sc = ScriptCollectionCore()
|
|
235
|
-
|
|
236
|
-
sc.run_program("flutter", f"build {target}", src_folder, verbosity)
|
|
236
|
+
self.run_with_epew("flutter", f"build {target}", src_folder, verbosity)
|
|
237
237
|
if target == "web":
|
|
238
238
|
web_relase_folder = os.path.join(src_folder, "build/web")
|
|
239
239
|
web_folder = os.path.join(artifacts_folder, "BuildResult_WebApplication")
|
|
@@ -620,7 +620,7 @@ class TasksForCommonProjectStructure:
|
|
|
620
620
|
|
|
621
621
|
@GeneralUtilities.check_arguments
|
|
622
622
|
def __standardized_tasks_build_for_dotnet_build(self, csproj_file: str, originaloutputfolder: str, files_to_sign: dict[str, str], commitid: str, verbosity: int, runtimes: list[str], target_environmenttype: str, target_environmenttype_mapping: dict[str, str], copy_license_file_to_target_folder: bool, repository_folder: str, codeunit_name: str, commandline_arguments: list[str]) -> None:
|
|
623
|
-
csproj_filename=os.path.basename(csproj_file)
|
|
623
|
+
csproj_filename = os.path.basename(csproj_file)
|
|
624
624
|
GeneralUtilities.write_message_to_stdout(f"Build {csproj_filename}...")
|
|
625
625
|
dotnet_build_configuration: str = target_environmenttype_mapping[target_environmenttype]
|
|
626
626
|
verbosity = self.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
|
@@ -774,12 +774,14 @@ class TasksForCommonProjectStructure:
|
|
|
774
774
|
verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
|
775
775
|
if verbosity == 0:
|
|
776
776
|
verbose_argument_for_reportgenerator = "Off"
|
|
777
|
-
|
|
777
|
+
elif verbosity == 1:
|
|
778
778
|
verbose_argument_for_reportgenerator = "Error"
|
|
779
|
-
|
|
779
|
+
elif verbosity == 2:
|
|
780
780
|
verbose_argument_for_reportgenerator = "Info"
|
|
781
|
-
|
|
781
|
+
elif verbosity == 3:
|
|
782
782
|
verbose_argument_for_reportgenerator = "Verbose"
|
|
783
|
+
else:
|
|
784
|
+
raise ValueError(f"Unknown value for verbosity: {GeneralUtilities.str_none_safe(verbosity)}")
|
|
783
785
|
|
|
784
786
|
# Generating report
|
|
785
787
|
GeneralUtilities.ensure_directory_does_not_exist(os.path.join(repository_folder, codeunitname, f"{codeunitname}/Other/Artifacts/TestCoverageReport"))
|
|
@@ -792,11 +794,8 @@ class TasksForCommonProjectStructure:
|
|
|
792
794
|
history_folder_full = os.path.join(repository_folder, history_folder)
|
|
793
795
|
GeneralUtilities.ensure_directory_exists(history_folder_full)
|
|
794
796
|
history_argument = f" -historydir:{history_folder}"
|
|
795
|
-
argument =
|
|
796
|
-
|
|
797
|
-
f"-title:{codeunitname} -tag:v{codeunit_version}")
|
|
798
|
-
self.__sc.run_program("reportgenerator", argument,
|
|
799
|
-
repository_folder, verbosity=verbosity)
|
|
797
|
+
argument = f"-reports:{codeunitname}/Other/Artifacts/TestCoverage/TestCoverage.xml -targetdir:{codeunitname}/Other/Artifacts/TestCoverageReport --verbosity:{verbose_argument_for_reportgenerator}{history_argument} -title:{codeunitname} -tag:v{codeunit_version}"
|
|
798
|
+
self.__sc.run_program("reportgenerator", argument, repository_folder, verbosity=verbosity)
|
|
800
799
|
if not add_testcoverage_history_entry:
|
|
801
800
|
os.remove(GeneralUtilities.get_direct_files_of_folder(history_folder_full)[-1])
|
|
802
801
|
|
|
@@ -806,10 +805,7 @@ class TasksForCommonProjectStructure:
|
|
|
806
805
|
fulltestcoverageubfolger = os.path.join(repository_folder, codeunitname, testcoverageubfolger)
|
|
807
806
|
GeneralUtilities.ensure_directory_does_not_exist(fulltestcoverageubfolger)
|
|
808
807
|
GeneralUtilities.ensure_directory_exists(fulltestcoverageubfolger)
|
|
809
|
-
self.__sc.run_program("reportgenerator", "-reports:Other/Artifacts/TestCoverage/TestCoverage.xml "
|
|
810
|
-
f"-targetdir:{testcoverageubfolger} -reporttypes:Badges " +
|
|
811
|
-
f"--verbosity:{verbose_argument_for_reportgenerator}", os.path.join(repository_folder, codeunitname),
|
|
812
|
-
verbosity=verbosity)
|
|
808
|
+
self.__sc.run_program("reportgenerator", f"-reports:Other/Artifacts/TestCoverage/TestCoverage.xml -targetdir:{testcoverageubfolger} -reporttypes:Badges --verbosity:{verbose_argument_for_reportgenerator}", os.path.join(repository_folder, codeunitname), verbosity=verbosity)
|
|
813
809
|
|
|
814
810
|
@GeneralUtilities.check_arguments
|
|
815
811
|
def standardized_tasks_run_testcases_for_dotnet_project(self, runtestcases_file: str, targetenvironmenttype: str, verbosity: int, generate_badges: bool, target_environmenttype_mapping: dict[str, str], commandline_arguments: list[str]) -> None:
|
|
@@ -842,8 +838,7 @@ class TasksForCommonProjectStructure:
|
|
|
842
838
|
self.run_testcases_common_post_task(repository_folder, codeunit_name, verbosity, generate_badges, targetenvironmenttype, commandline_arguments)
|
|
843
839
|
|
|
844
840
|
@GeneralUtilities.check_arguments
|
|
845
|
-
def run_testcases_common_post_task(self, repository_folder: str, codeunit_name: str, verbosity: int, generate_badges: bool,
|
|
846
|
-
targetenvironmenttype: str, commandline_arguments: list[str]) -> None:
|
|
841
|
+
def run_testcases_common_post_task(self, repository_folder: str, codeunit_name: str, verbosity: int, generate_badges: bool, targetenvironmenttype: str, commandline_arguments: list[str]) -> None:
|
|
847
842
|
coverage_file_folder = os.path.join(repository_folder, codeunit_name, "Other/Artifacts/TestCoverage")
|
|
848
843
|
coveragefiletarget = os.path.join(coverage_file_folder, "TestCoverage.xml")
|
|
849
844
|
self.update_path_of_source_in_testcoverage_file(repository_folder, codeunit_name)
|
|
@@ -865,8 +860,7 @@ class TasksForCommonProjectStructure:
|
|
|
865
860
|
filename = match.group(1)
|
|
866
861
|
file = os.path.join(source, filename)
|
|
867
862
|
# GeneralUtilities.assert_condition(os.path.isfile(file),f"File \"{file}\" does not exist.")
|
|
868
|
-
GeneralUtilities.assert_condition(file.startswith(codeunit_folder),
|
|
869
|
-
f"Unexpected path for coverage-file. File: \"{file}\"; codeunitfolder: \"{codeunit_folder}\"")
|
|
863
|
+
GeneralUtilities.assert_condition(file.startswith(codeunit_folder), f"Unexpected path for coverage-file. File: \"{file}\"; codeunitfolder: \"{codeunit_folder}\"")
|
|
870
864
|
filename_relative = f".{file[len(codeunit_folder):]}"
|
|
871
865
|
return f'filename="{filename_relative}"'
|
|
872
866
|
|
|
@@ -876,15 +870,15 @@ class TasksForCommonProjectStructure:
|
|
|
876
870
|
root: etree._ElementTree = etree.parse(testcoveragefile)
|
|
877
871
|
codeunit_folder = os.path.join(repository_folder, codeunit_name)
|
|
878
872
|
xpath = f"//coverage/packages/package[@name='{codeunit_name}']/classes/class"
|
|
879
|
-
|
|
873
|
+
coverage_report_classes = root.xpath(xpath)
|
|
880
874
|
found_existing_files = False
|
|
881
|
-
for
|
|
882
|
-
filename =
|
|
875
|
+
for coverage_report_class in coverage_report_classes:
|
|
876
|
+
filename = coverage_report_class.attrib['filename']
|
|
883
877
|
file = os.path.join(codeunit_folder, filename)
|
|
884
878
|
if os.path.isfile(file):
|
|
885
879
|
found_existing_files = True
|
|
886
880
|
else:
|
|
887
|
-
|
|
881
|
+
coverage_report_class.getparent().remove(coverage_report_class)
|
|
888
882
|
GeneralUtilities.assert_condition(found_existing_files, f"No existing files in testcoderage-report-file \"{testcoveragefile}\".")
|
|
889
883
|
result = etree.tostring(root).decode("utf-8")
|
|
890
884
|
GeneralUtilities.write_text_to_file(testcoveragefile, result)
|
|
@@ -916,7 +910,7 @@ class TasksForCommonProjectStructure:
|
|
|
916
910
|
# TODO check if there are errors in sarif-file
|
|
917
911
|
|
|
918
912
|
@GeneralUtilities.check_arguments
|
|
919
|
-
def __export_codeunit_reference_content_to_reference_repository(self, project_version_identifier: str, replace_existing_content: bool,
|
|
913
|
+
def __export_codeunit_reference_content_to_reference_repository(self, project_version_identifier: str, replace_existing_content: bool, target_folder_for_reference_repository: str, repository: str, codeunitname: str, projectname: str, codeunit_version: str, public_repository_url: str, branch: str) -> None:
|
|
920
914
|
codeunit_folder = os.path.join(repository, codeunitname)
|
|
921
915
|
codeunit_file = os.path.join(codeunit_folder, f"{codeunitname}.codeunit.xml")
|
|
922
916
|
codeunit_has_testcases = self.codeunit_has_testable_sourcecode(codeunit_file)
|
|
@@ -931,8 +925,7 @@ class TasksForCommonProjectStructure:
|
|
|
931
925
|
diff_target_folder = os.path.join(target_folder, "DiffReport")
|
|
932
926
|
GeneralUtilities.ensure_directory_exists(diff_target_folder)
|
|
933
927
|
diff_target_file = os.path.join(diff_target_folder, "DiffReport.html")
|
|
934
|
-
title = (f'Reference of codeunit {codeunitname} {codeunit_version_identifier} (contained in project '
|
|
935
|
-
f'<a href="{public_repository_url}">{projectname}</a> {project_version_identifier})')
|
|
928
|
+
title = (f'Reference of codeunit {codeunitname} {codeunit_version_identifier} (contained in project <a href="{public_repository_url}">{projectname}</a> {project_version_identifier})')
|
|
936
929
|
if public_repository_url is None:
|
|
937
930
|
repo_url_html = ""
|
|
938
931
|
else:
|
|
@@ -1045,7 +1038,7 @@ class TasksForCommonProjectStructure:
|
|
|
1045
1038
|
@GeneralUtilities.check_arguments
|
|
1046
1039
|
def __generate_entire_reference(self, projectname: str, project_version: str, reference_folder: str) -> None:
|
|
1047
1040
|
all_available_version_identifier_folders_of_reference: list[str] = list(folder for folder in GeneralUtilities.get_direct_folders_of_folder(reference_folder))
|
|
1048
|
-
all_available_version_identifier_folders_of_reference = sorted(all_available_version_identifier_folders_of_reference,
|
|
1041
|
+
all_available_version_identifier_folders_of_reference = sorted(all_available_version_identifier_folders_of_reference, key=cmp_to_key(TasksForCommonProjectStructure._internal_sort_reference_folder))
|
|
1049
1042
|
reference_versions_html_lines = []
|
|
1050
1043
|
reference_versions_html_lines.append(' <hr/>')
|
|
1051
1044
|
for all_available_version_identifier_folder_of_reference in all_available_version_identifier_folders_of_reference:
|
|
@@ -1109,17 +1102,26 @@ class TasksForCommonProjectStructure:
|
|
|
1109
1102
|
raise ValueError(f"Repository '{repository_folder}' has uncommitted changes.")
|
|
1110
1103
|
|
|
1111
1104
|
@GeneralUtilities.check_arguments
|
|
1112
|
-
def
|
|
1105
|
+
def generate_certificate_for_development_purposes_for_external_service(self, service_folder: str, domain: str = None):
|
|
1106
|
+
testservice_name = os.path.basename(service_folder)
|
|
1107
|
+
self.__generate_certificate_for_development_purposes(testservice_name, os.path.join(service_folder, "Resources"), domain)
|
|
1108
|
+
|
|
1109
|
+
@GeneralUtilities.check_arguments
|
|
1110
|
+
def generate_certificate_for_development_purposes_for_codeunit(self, codeunit_folder: str, domain: str = None):
|
|
1113
1111
|
codeunit_name = os.path.basename(codeunit_folder)
|
|
1112
|
+
self.__generate_certificate_for_development_purposes(codeunit_name, os.path.join(codeunit_folder, "Other", "Resources"), domain)
|
|
1113
|
+
|
|
1114
|
+
@GeneralUtilities.check_arguments
|
|
1115
|
+
def __generate_certificate_for_development_purposes(self, service_name: str, resources_folder: str, domain: str = None):
|
|
1114
1116
|
if domain is None:
|
|
1115
|
-
domain = f"{
|
|
1117
|
+
domain = f"{service_name}.test.local"
|
|
1116
1118
|
domain = domain.lower()
|
|
1117
|
-
resources_folder: str = os.path.join(codeunit_folder, "Other", "Resources")
|
|
1118
1119
|
resource_name: str = "DevelopmentCertificate"
|
|
1119
1120
|
certificate_folder: str = os.path.join(resources_folder, resource_name)
|
|
1120
|
-
|
|
1121
|
+
|
|
1122
|
+
resource_content_filename: str = service_name+resource_name
|
|
1121
1123
|
ca_resource_name: str = f"{resource_name}Authority"
|
|
1122
|
-
dev_ca_name =
|
|
1124
|
+
dev_ca_name = service_name+ca_resource_name
|
|
1123
1125
|
ca_folder = os.path.join(resources_folder, ca_resource_name)
|
|
1124
1126
|
certificate_file = os.path.join(certificate_folder, f"{domain}.crt")
|
|
1125
1127
|
unsignedcertificate_file = os.path.join(certificate_folder, f"{domain}.unsigned.crt")
|
|
@@ -1257,7 +1259,7 @@ class TasksForCommonProjectStructure:
|
|
|
1257
1259
|
codeunit_folder = GeneralUtilities.resolve_relative_path("../..", str(os.path.dirname(build_script_file)))
|
|
1258
1260
|
codeunitname_lower = codeunitname.lower()
|
|
1259
1261
|
codeunitversion = self.get_version_of_codeunit(os.path.join(codeunit_folder, f"{codeunitname}.codeunit.xml"))
|
|
1260
|
-
args = ["image", "build", "--pull", "--force-rm", "--progress=plain", "--build-arg", f"TargetEnvironmentType={target_environment_type}", "--tag", f"{codeunitname_lower}:latest", "--tag", f"{codeunitname_lower}:{codeunitversion}", "--file", f"{codeunitname}/Dockerfile"]
|
|
1262
|
+
args = ["image", "build", "--pull", "--force-rm", "--progress=plain", "--build-arg", f"TargetEnvironmentType={target_environment_type}", "--build-arg", f"Version={codeunitversion}", "--tag", f"{codeunitname_lower}:latest", "--tag", f"{codeunitname_lower}:{codeunitversion}", "--file", f"{codeunitname}/Dockerfile"]
|
|
1261
1263
|
if not use_cache:
|
|
1262
1264
|
args.append("--no-cache")
|
|
1263
1265
|
args.append(".")
|
|
@@ -1351,7 +1353,7 @@ class TasksForCommonProjectStructure:
|
|
|
1351
1353
|
def standardized_tasks_do_common_tasks(self, common_tasks_scripts_file: str, codeunit_version: str, verbosity: int, targetenvironmenttype: str, clear_artifacts_folder: bool, additional_arguments_file: str, assume_dependent_codeunits_are_already_built: bool, commandline_arguments: list[str]) -> None:
|
|
1352
1354
|
additional_arguments_file = self.get_additionalargumentsfile_from_commandline_arguments(commandline_arguments, additional_arguments_file)
|
|
1353
1355
|
target_environmenttype = self.get_targetenvironmenttype_from_commandline_arguments(commandline_arguments, targetenvironmenttype)
|
|
1354
|
-
assume_dependent_codeunits_are_already_built = self.get_assume_dependent_codeunits_are_already_built_from_commandline_arguments(commandline_arguments,assume_dependent_codeunits_are_already_built)
|
|
1356
|
+
assume_dependent_codeunits_are_already_built = self.get_assume_dependent_codeunits_are_already_built_from_commandline_arguments(commandline_arguments, assume_dependent_codeunits_are_already_built)
|
|
1355
1357
|
if commandline_arguments is None:
|
|
1356
1358
|
raise ValueError('The "commandline_arguments"-parameter is not defined.')
|
|
1357
1359
|
if len(commandline_arguments) == 0:
|
|
@@ -1432,7 +1434,7 @@ class TasksForCommonProjectStructure:
|
|
|
1432
1434
|
|
|
1433
1435
|
# Get artifacts from dependent codeunits
|
|
1434
1436
|
if assume_dependent_codeunits_are_already_built:
|
|
1435
|
-
self.build_dependent_code_units(repository_folder, codeunit_name, verbosity, target_environmenttype, additional_arguments_file,commandline_arguments)
|
|
1437
|
+
self.build_dependent_code_units(repository_folder, codeunit_name, verbosity, target_environmenttype, additional_arguments_file, commandline_arguments)
|
|
1436
1438
|
self.copy_artifacts_from_dependent_code_units(repository_folder, codeunit_name)
|
|
1437
1439
|
|
|
1438
1440
|
# Update codeunit-version
|
|
@@ -1502,8 +1504,7 @@ class TasksForCommonProjectStructure:
|
|
|
1502
1504
|
# TODO
|
|
1503
1505
|
|
|
1504
1506
|
@GeneralUtilities.check_arguments
|
|
1505
|
-
def standardized_tasks_linting_for_angular_codeunit(self, linting_script_file: str, verbosity: int,
|
|
1506
|
-
build_environment_target_type: str, commandline_arguments: list[str]) -> None:
|
|
1507
|
+
def standardized_tasks_linting_for_angular_codeunit(self, linting_script_file: str, verbosity: int, build_environment_target_type: str, commandline_arguments: list[str]) -> None:
|
|
1507
1508
|
verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
|
1508
1509
|
build_script_folder = os.path.dirname(linting_script_file)
|
|
1509
1510
|
codeunit_folder = GeneralUtilities.resolve_relative_path("../..", build_script_folder)
|
|
@@ -1517,15 +1518,13 @@ class TasksForCommonProjectStructure:
|
|
|
1517
1518
|
codeunit_name = os.path.basename(codeunit_folder)
|
|
1518
1519
|
src_folder = GeneralUtilities.resolve_relative_path(package_name, codeunit_folder)
|
|
1519
1520
|
verbosity = self.get_verbosity_from_commandline_arguments(args, verbosity)
|
|
1520
|
-
|
|
1521
|
-
sc.program_runner = ProgramRunnerEpew()
|
|
1522
|
-
sc.run_program("flutter", "test --coverage", src_folder, verbosity)
|
|
1521
|
+
self.run_with_epew("flutter", "test --coverage", src_folder, verbosity)
|
|
1523
1522
|
test_coverage_folder_relative = "Other/Artifacts/TestCoverage"
|
|
1524
1523
|
test_coverage_folder = GeneralUtilities.resolve_relative_path(test_coverage_folder_relative, codeunit_folder)
|
|
1525
1524
|
GeneralUtilities.ensure_directory_exists(test_coverage_folder)
|
|
1526
1525
|
coverage_file_relative = f"{test_coverage_folder_relative}/TestCoverage.xml"
|
|
1527
1526
|
coverage_file = GeneralUtilities.resolve_relative_path(coverage_file_relative, codeunit_folder)
|
|
1528
|
-
|
|
1527
|
+
self.run_with_epew("lcov_cobertura", f"coverage/lcov.info --base-dir . --excludes test --output ../{coverage_file_relative} --demangle", src_folder, verbosity)
|
|
1529
1528
|
content = GeneralUtilities.read_text_from_file(coverage_file)
|
|
1530
1529
|
content = re.sub('<![^<]+>', '', content)
|
|
1531
1530
|
content = re.sub('\\\\', '/', content)
|
|
@@ -1537,19 +1536,57 @@ class TasksForCommonProjectStructure:
|
|
|
1537
1536
|
|
|
1538
1537
|
@GeneralUtilities.check_arguments
|
|
1539
1538
|
def standardized_tasks_run_testcases_for_angular_codeunit(self, runtestcases_script_file: str, build_environment_target_type: str, generate_badges: bool, verbosity: int, commandline_arguments: list[str]) -> None:
|
|
1539
|
+
# prepare
|
|
1540
1540
|
codeunit_name: str = os.path.basename(str(Path(os.path.dirname(runtestcases_script_file)).parent.parent.absolute()))
|
|
1541
1541
|
verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
|
1542
1542
|
codeunit_folder = GeneralUtilities.resolve_relative_path("../..", os.path.dirname(runtestcases_script_file))
|
|
1543
1543
|
repository_folder = os.path.dirname(codeunit_folder)
|
|
1544
|
-
|
|
1545
|
-
|
|
1544
|
+
|
|
1545
|
+
# run testcases
|
|
1546
|
+
self.run_with_epew("ng", "test --watch=false --browsers ChromeHeadless --code-coverage", codeunit_folder, verbosity=verbosity)
|
|
1547
|
+
|
|
1548
|
+
# rename file
|
|
1546
1549
|
coverage_folder = os.path.join(codeunit_folder, "Other", "Artifacts", "TestCoverage")
|
|
1547
1550
|
target_file = os.path.join(coverage_folder, "TestCoverage.xml")
|
|
1548
1551
|
GeneralUtilities.ensure_file_does_not_exist(target_file)
|
|
1549
1552
|
os.rename(os.path.join(coverage_folder, "cobertura-coverage.xml"), target_file)
|
|
1550
1553
|
self.__rename_packagename_in_coverage_file(target_file, codeunit_name)
|
|
1554
|
+
|
|
1555
|
+
# adapt backslashs to slashs
|
|
1551
1556
|
content = GeneralUtilities.read_text_from_file(target_file)
|
|
1552
1557
|
content = re.sub('\\\\', '/', content)
|
|
1558
|
+
GeneralUtilities.write_text_to_file(target_file, content)
|
|
1559
|
+
|
|
1560
|
+
# aggregate packages in testcoverage-file
|
|
1561
|
+
roottree: etree._ElementTree = etree.parse(target_file)
|
|
1562
|
+
existing_classes = list(roottree.xpath('//coverage/packages/package/classes/class'))
|
|
1563
|
+
|
|
1564
|
+
old_packages_list = roottree.xpath('//coverage/packages/package')
|
|
1565
|
+
for package in old_packages_list:
|
|
1566
|
+
package.getparent().remove(package)
|
|
1567
|
+
|
|
1568
|
+
root = roottree.getroot()
|
|
1569
|
+
packages_element = root.find("packages")
|
|
1570
|
+
package_element = etree.SubElement(packages_element, "package")
|
|
1571
|
+
package_element.attrib['name'] = codeunit_name
|
|
1572
|
+
package_element.attrib['lines-valid'] = root.attrib["lines-valid"]
|
|
1573
|
+
package_element.attrib['lines-covered'] = root.attrib["lines-covered"]
|
|
1574
|
+
package_element.attrib['line-rate'] = root.attrib["line-rate"]
|
|
1575
|
+
package_element.attrib['branches-valid'] = root.attrib["branches-valid"]
|
|
1576
|
+
package_element.attrib['branches-covered'] = root.attrib["branches-covered"]
|
|
1577
|
+
package_element.attrib['branch-rate'] = root.attrib["branch-rate"]
|
|
1578
|
+
package_element.attrib['timestamp'] = root.attrib["timestamp"]
|
|
1579
|
+
package_element.attrib['complexity'] = root.attrib["complexity"]
|
|
1580
|
+
|
|
1581
|
+
classes_element = etree.SubElement(package_element, "classes")
|
|
1582
|
+
|
|
1583
|
+
for existing_class in existing_classes:
|
|
1584
|
+
classes_element.append(existing_class)
|
|
1585
|
+
|
|
1586
|
+
result = etree.tostring(roottree, pretty_print=True).decode("utf-8")
|
|
1587
|
+
GeneralUtilities.write_text_to_file(target_file, result)
|
|
1588
|
+
|
|
1589
|
+
# post tasks
|
|
1553
1590
|
self.run_testcases_common_post_task(repository_folder, codeunit_name, verbosity, generate_badges, build_environment_target_type, commandline_arguments)
|
|
1554
1591
|
|
|
1555
1592
|
@GeneralUtilities.check_arguments
|
|
@@ -1664,7 +1701,7 @@ class TasksForCommonProjectStructure:
|
|
|
1664
1701
|
raise ValueError("Too many results found.")
|
|
1665
1702
|
|
|
1666
1703
|
@GeneralUtilities.check_arguments
|
|
1667
|
-
def copy_development_certificate_to_default_development_directory(self, codeunit_folder: str, build_environment: str, domain: str = None,
|
|
1704
|
+
def copy_development_certificate_to_default_development_directory(self, codeunit_folder: str, build_environment: str, domain: str = None, certificate_resource_name: str = "DevelopmentCertificate") -> None:
|
|
1668
1705
|
if build_environment == "Development":
|
|
1669
1706
|
codeunit_name: str = os.path.basename(codeunit_folder)
|
|
1670
1707
|
if domain is None:
|
|
@@ -1736,13 +1773,14 @@ class TasksForCommonProjectStructure:
|
|
|
1736
1773
|
GeneralUtilities.write_message_to_stdout("Generate OpenAPI-specification-file...")
|
|
1737
1774
|
codeunitname = os.path.basename(str(Path(os.path.dirname(buildscript_file)).parent.parent.absolute()))
|
|
1738
1775
|
repository_folder = str(Path(os.path.dirname(buildscript_file)).parent.parent.parent.absolute())
|
|
1739
|
-
|
|
1776
|
+
codeunit_folder = os.path.join(repository_folder, codeunitname)
|
|
1777
|
+
artifacts_folder = os.path.join(codeunit_folder, "Other", "Artifacts")
|
|
1740
1778
|
GeneralUtilities.ensure_directory_exists(os.path.join(artifacts_folder, "APISpecification"))
|
|
1741
1779
|
verbosity = self.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
|
1742
|
-
codeunit_version = self.get_version_of_codeunit_folder(
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1780
|
+
codeunit_version = self.get_version_of_codeunit_folder(codeunit_folder)
|
|
1781
|
+
versioned_api_spec_file = f"APISpecification/{codeunitname}.v{codeunit_version}.api.json"
|
|
1782
|
+
self.__sc.run_program("swagger", f"tofile --output {versioned_api_spec_file} BuildResult_DotNet_{runtime}/{codeunitname}.dll {swagger_document_name}", artifacts_folder, verbosity=verbosity)
|
|
1783
|
+
shutil.copyfile(os.path.join(artifacts_folder, versioned_api_spec_file), os.path.join(artifacts_folder, f"APISpecification/{codeunitname}.latest.api.json"))
|
|
1746
1784
|
|
|
1747
1785
|
@GeneralUtilities.check_arguments
|
|
1748
1786
|
def replace_version_in_packagejson_file(self, packagejson_file: str, codeunit_version: str) -> None:
|
|
@@ -1754,8 +1792,8 @@ class TasksForCommonProjectStructure:
|
|
|
1754
1792
|
json.dump(data, f, indent=2)
|
|
1755
1793
|
|
|
1756
1794
|
@GeneralUtilities.check_arguments
|
|
1757
|
-
def build_dependent_code_units(self, repo_folder: str, codeunit_name: str, verbosity: int, target_environmenttype: str, additional_arguments_file: str, commandlinearguments:list[str]) -> None:
|
|
1758
|
-
verbosity=self.get_verbosity_from_commandline_arguments(commandlinearguments,verbosity)
|
|
1795
|
+
def build_dependent_code_units(self, repo_folder: str, codeunit_name: str, verbosity: int, target_environmenttype: str, additional_arguments_file: str, commandlinearguments: list[str]) -> None:
|
|
1796
|
+
verbosity = self.get_verbosity_from_commandline_arguments(commandlinearguments, verbosity)
|
|
1759
1797
|
codeunit_file = os.path.join(repo_folder, codeunit_name, codeunit_name + ".codeunit.xml")
|
|
1760
1798
|
dependent_codeunits = self.get_dependent_code_units(codeunit_file)
|
|
1761
1799
|
dependent_codeunits_folder = os.path.join(repo_folder, codeunit_name, "Other", "Resources", "DependentCodeUnits")
|
|
@@ -1763,7 +1801,7 @@ class TasksForCommonProjectStructure:
|
|
|
1763
1801
|
if 0 < len(dependent_codeunits):
|
|
1764
1802
|
GeneralUtilities.write_message_to_stdout(f"Start building dependent codeunits for codeunit {codeunit_name}.")
|
|
1765
1803
|
for dependent_codeunit in dependent_codeunits:
|
|
1766
|
-
self.__build_codeunit(os.path.join(repo_folder, dependent_codeunit), verbosity, target_environmenttype, additional_arguments_file,False,False,commandlinearguments)
|
|
1804
|
+
self.__build_codeunit(os.path.join(repo_folder, dependent_codeunit), verbosity, target_environmenttype, additional_arguments_file, False, False, commandlinearguments)
|
|
1767
1805
|
if 0 < len(dependent_codeunits):
|
|
1768
1806
|
GeneralUtilities.write_message_to_stdout(f"Finished building dependent codeunits for codeunit {codeunit_name}.")
|
|
1769
1807
|
|
|
@@ -1791,8 +1829,7 @@ class TasksForCommonProjectStructure:
|
|
|
1791
1829
|
for codeunit in codeunits:
|
|
1792
1830
|
artifact_files.append(self.__sc.find_file_by_extension(f"{build_artifacts_folder}\\{productname}\\{projectversion}\\{codeunit}", "Productive.Artifacts.zip"))
|
|
1793
1831
|
changelog_file = os.path.join(repository_folder, "Other", "Resources", "Changelog", f"v{projectversion}.md")
|
|
1794
|
-
self.__sc.run_program_argsasarray("gh", ["release", "create", f"v{projectversion}", "--repo", github_repo, "--notes-file", changelog_file,
|
|
1795
|
-
"--title", f"Release v{projectversion}"]+artifact_files, verbosity=verbosity)
|
|
1832
|
+
self.__sc.run_program_argsasarray("gh", ["release", "create", f"v{projectversion}", "--repo", github_repo, "--notes-file", changelog_file, "--title", f"Release v{projectversion}"]+artifact_files, verbosity=verbosity)
|
|
1796
1833
|
|
|
1797
1834
|
@GeneralUtilities.check_arguments
|
|
1798
1835
|
def update_dependencies_of_typical_flutter_codeunit(self, update_script_file: str, verbosity: int, cmd_args: list[str]) -> None:
|
|
@@ -1830,6 +1867,9 @@ class TasksForCommonProjectStructure:
|
|
|
1830
1867
|
@GeneralUtilities.check_arguments
|
|
1831
1868
|
def run_local_test_service(self, file: str):
|
|
1832
1869
|
example_folder = os.path.dirname(file)
|
|
1870
|
+
docker_compose_file = os.path.join(example_folder, "docker-compose.yml")
|
|
1871
|
+
for service in self.__sc.get_services_from_yaml_file(docker_compose_file):
|
|
1872
|
+
self.__sc.kill_docker_container(service)
|
|
1833
1873
|
example_name = os.path.basename(example_folder)
|
|
1834
1874
|
title = f"Test{example_name}"
|
|
1835
1875
|
self.__sc.run_program("docker", f"compose -p {title.lower()} up", example_folder, title=title)
|
|
@@ -1915,33 +1955,31 @@ class TasksForCommonProjectStructure:
|
|
|
1915
1955
|
raise ValueError(f"Invalid target-environmenttype: '{target_environmenttype}'")
|
|
1916
1956
|
|
|
1917
1957
|
@GeneralUtilities.check_arguments
|
|
1918
|
-
def build_codeunit(self, codeunit_folder: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None, assume_dependent_codeunits_are_already_built: bool = False,commandlinearguments:list[str]=[]) -> None:
|
|
1958
|
+
def build_codeunit(self, codeunit_folder: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None, assume_dependent_codeunits_are_already_built: bool = False, commandlinearguments: list[str] = []) -> None:
|
|
1919
1959
|
codeunit_folder = GeneralUtilities.resolve_relative_path_from_current_working_directory(codeunit_folder)
|
|
1920
1960
|
codeunit_name = os.path.basename(codeunit_folder)
|
|
1921
1961
|
repository_folder = os.path.dirname(codeunit_folder)
|
|
1922
|
-
self.build_specific_codeunits(repository_folder, [codeunit_name], verbosity, target_environmenttype, additional_arguments_file, is_pre_merge, export_target_directory, assume_dependent_codeunits_are_already_built,commandlinearguments)
|
|
1962
|
+
self.build_specific_codeunits(repository_folder, [codeunit_name], verbosity, target_environmenttype, additional_arguments_file, is_pre_merge, export_target_directory, assume_dependent_codeunits_are_already_built, commandlinearguments)
|
|
1923
1963
|
|
|
1924
1964
|
@GeneralUtilities.check_arguments
|
|
1925
|
-
def build_codeunitsC(self, repository_folder: str, image: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None,commandlinearguments:list[str]=[]) -> None:
|
|
1965
|
+
def build_codeunitsC(self, repository_folder: str, image: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, commandlinearguments: list[str] = []) -> None:
|
|
1926
1966
|
if target_environmenttype == "Development":
|
|
1927
1967
|
raise ValueError(f"build_codeunitsC is not available for target_environmenttype {target_environmenttype}.")
|
|
1928
1968
|
# TODO handle additional_arguments_file
|
|
1929
1969
|
# TODO add option to allow building different codeunits in same project with different images due to their demands
|
|
1930
1970
|
# TODO check if image provides all demands of codeunit
|
|
1931
1971
|
self.__sc.run_program(
|
|
1932
|
-
"docker", f"run --volume {repository_folder}:/Workspace/Repository " +
|
|
1933
|
-
f"-e repositoryfolder=/Workspace/Repository -e verbosity={verbosity} -e targetenvironment={target_environmenttype} {image}",
|
|
1934
|
-
repository_folder)
|
|
1972
|
+
"docker", f"run --volume {repository_folder}:/Workspace/Repository " + f"-e repositoryfolder=/Workspace/Repository -e verbosity={verbosity} -e targetenvironment={target_environmenttype} {image}", repository_folder)
|
|
1935
1973
|
|
|
1936
1974
|
@GeneralUtilities.check_arguments
|
|
1937
|
-
def build_codeunits(self, repository_folder: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None,commandline_arguments:list[str]=[]) -> None:
|
|
1975
|
+
def build_codeunits(self, repository_folder: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None, commandline_arguments: list[str] = []) -> None:
|
|
1938
1976
|
self.__check_target_environmenttype(target_environmenttype)
|
|
1939
1977
|
repository_folder = GeneralUtilities.resolve_relative_path_from_current_working_directory(repository_folder)
|
|
1940
1978
|
codeunits = self.get_codeunits(repository_folder, False)
|
|
1941
|
-
self.build_specific_codeunits(repository_folder, codeunits, verbosity, target_environmenttype, additional_arguments_file, is_pre_merge, export_target_directory,False,commandline_arguments)
|
|
1979
|
+
self.build_specific_codeunits(repository_folder, codeunits, verbosity, target_environmenttype, additional_arguments_file, is_pre_merge, export_target_directory, False, commandline_arguments)
|
|
1942
1980
|
|
|
1943
1981
|
@GeneralUtilities.check_arguments
|
|
1944
|
-
def build_specific_codeunits(self, repository_folder: str, codeunits: list[str], verbosity: int = 1, target_environmenttype: str = "QualityCheck",additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None, assume_dependent_codeunits_are_already_built: bool = True,commandline_arguments:list[str]=[]) -> None:
|
|
1982
|
+
def build_specific_codeunits(self, repository_folder: str, codeunits: list[str], verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None, assume_dependent_codeunits_are_already_built: bool = True, commandline_arguments: list[str] = []) -> None:
|
|
1945
1983
|
self.__check_target_environmenttype(target_environmenttype)
|
|
1946
1984
|
repository_folder = GeneralUtilities.resolve_relative_path_from_current_working_directory(repository_folder)
|
|
1947
1985
|
contains_uncommitted_changes = self.__sc.git_repository_has_uncommitted_changes(repository_folder)
|
|
@@ -1971,8 +2009,7 @@ class TasksForCommonProjectStructure:
|
|
|
1971
2009
|
line = "----------"
|
|
1972
2010
|
for codeunit in sorted_codeunits:
|
|
1973
2011
|
GeneralUtilities.write_message_to_stdout(line)
|
|
1974
|
-
self.__build_codeunit(os.path.join(repository_folder, codeunit), verbosity, target_environmenttype,
|
|
1975
|
-
additional_arguments_file, is_pre_merge, assume_dependent_codeunits_are_already_built,commandline_arguments)
|
|
2012
|
+
self.__build_codeunit(os.path.join(repository_folder, codeunit), verbosity, target_environmenttype, additional_arguments_file, is_pre_merge, assume_dependent_codeunits_are_already_built, commandline_arguments)
|
|
1976
2013
|
GeneralUtilities.write_message_to_stdout(line)
|
|
1977
2014
|
if not contains_uncommitted_changes and self.__sc.git_repository_has_uncommitted_changes(repository_folder) and not is_pre_merge:
|
|
1978
2015
|
message = f'Due to the build-process the repository "{repository_folder}" has new uncommitted changes.'
|
|
@@ -2003,7 +2040,7 @@ class TasksForCommonProjectStructure:
|
|
|
2003
2040
|
|
|
2004
2041
|
@GeneralUtilities.check_arguments
|
|
2005
2042
|
def __check_if_folder_is_git_repository(self, repository_folder: str) -> None:
|
|
2006
|
-
if(not self.__sc.is_git_repository(repository_folder)):
|
|
2043
|
+
if (not self.__sc.is_git_repository(repository_folder)):
|
|
2007
2044
|
raise ValueError(f"Folder {repository_folder} is not a git-repository")
|
|
2008
2045
|
|
|
2009
2046
|
@GeneralUtilities.check_arguments
|
|
@@ -2146,7 +2183,7 @@ class TasksForCommonProjectStructure:
|
|
|
2146
2183
|
for file in GeneralUtilities.get_all_files_of_folder(files_folder):
|
|
2147
2184
|
if file.endswith(".plantuml"):
|
|
2148
2185
|
argument = ['-jar', f'{plant_uml_folder}/plantuml.jar', os.path.basename(file).replace("\\", "/"), '-tsvg']
|
|
2149
|
-
sc.run_program_argsasarray("java", argument, os.path.dirname(file),verbosity=0)
|
|
2186
|
+
sc.run_program_argsasarray("java", argument, os.path.dirname(file), verbosity=0)
|
|
2150
2187
|
|
|
2151
2188
|
@GeneralUtilities.check_arguments
|
|
2152
2189
|
def load_deb_control_file_content(self, file: str, codeunitname: str, codeunitversion: str, installedsize: int, maintainername: str, maintaineremail: str, description: str,) -> str:
|
|
@@ -2224,7 +2261,7 @@ class TasksForCommonProjectStructure:
|
|
|
2224
2261
|
GeneralUtilities.write_message_to_stderr(f"Warning: {message}")
|
|
2225
2262
|
|
|
2226
2263
|
@GeneralUtilities.check_arguments
|
|
2227
|
-
def __build_codeunit(self, codeunit_folder: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, assume_dependent_codeunits_are_already_built: bool = False,commandline_arguments:list[str]=[]) -> None:
|
|
2264
|
+
def __build_codeunit(self, codeunit_folder: str, verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, assume_dependent_codeunits_are_already_built: bool = False, commandline_arguments: list[str] = []) -> None:
|
|
2228
2265
|
now = datetime.now()
|
|
2229
2266
|
codeunit_folder = GeneralUtilities.resolve_relative_path_from_current_working_directory(codeunit_folder)
|
|
2230
2267
|
codeunit_name: str = os.path.basename(codeunit_folder)
|
|
@@ -2242,7 +2279,7 @@ class TasksForCommonProjectStructure:
|
|
|
2242
2279
|
GeneralUtilities.write_message_to_stdout(f"Build-environmenttype: {target_environmenttype}")
|
|
2243
2280
|
GeneralUtilities.ensure_directory_does_not_exist(artifacts_folder)
|
|
2244
2281
|
|
|
2245
|
-
verbosity_for_executed_programs = self.get_verbosity_from_commandline_arguments(commandline_arguments,verbosity)
|
|
2282
|
+
verbosity_for_executed_programs = self.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
|
2246
2283
|
|
|
2247
2284
|
other_folder = os.path.join(codeunit_folder, "Other")
|
|
2248
2285
|
build_folder = os.path.join(other_folder, "Build")
|
|
@@ -2340,13 +2377,15 @@ class TasksForCommonProjectStructure:
|
|
|
2340
2377
|
def generic_update_dependencies(self, repository_folder: str):
|
|
2341
2378
|
codeunits = self.get_codeunits(repository_folder)
|
|
2342
2379
|
updated_dependencies = False
|
|
2380
|
+
verbosity: int = 1 # TODO set value dynamically
|
|
2343
2381
|
for codeunit in codeunits:
|
|
2344
2382
|
codeunit_file = os.path.join(repository_folder, codeunit, f"{codeunit}.codeunit.xml")
|
|
2345
2383
|
codeunit_has_updatable_dependencies = self.codeunit_has_updatable_dependencies(codeunit_file)
|
|
2346
2384
|
if codeunit_has_updatable_dependencies:
|
|
2347
2385
|
codeunit_folder = os.path.join(repository_folder, codeunit)
|
|
2348
2386
|
update_dependencies_script_folder = os.path.join(codeunit_folder, "Other")
|
|
2349
|
-
|
|
2387
|
+
GeneralUtilities.ensure_directory_exists(os.path.join(update_dependencies_script_folder, "Resources", "CodeAnalysisResult"))
|
|
2388
|
+
self.__sc.run_program("python", "UpdateDependencies.py", update_dependencies_script_folder, verbosity)
|
|
2350
2389
|
if self.__sc.git_repository_has_uncommitted_changes(repository_folder):
|
|
2351
2390
|
version_of_project = self.get_version_of_project(repository_folder)
|
|
2352
2391
|
changelog_file = os.path.join(repository_folder, "Other", "Resources", "Changelog", f"v{version_of_project}.md")
|
|
@@ -2362,7 +2401,7 @@ class TasksForCommonProjectStructure:
|
|
|
2362
2401
|
else:
|
|
2363
2402
|
GeneralUtilities.write_message_to_stdout(f"There are no dependencies to update in codeunit {codeunit}.")
|
|
2364
2403
|
if updated_dependencies:
|
|
2365
|
-
self.__sc.run_program("scbuildcodeunits", "--targetenvironment QualityCheck", repository_folder)#TODO set verbosity
|
|
2404
|
+
self.__sc.run_program("scbuildcodeunits", "--targetenvironment QualityCheck", repository_folder) # TODO set verbosity
|
|
2366
2405
|
self.__sc.git_commit(repository_folder, "Updated dependencies")
|
|
2367
2406
|
|
|
2368
2407
|
class GenericPrepareNewReleaseArguments:
|
|
@@ -2389,7 +2428,7 @@ class TasksForCommonProjectStructure:
|
|
|
2389
2428
|
# prepare
|
|
2390
2429
|
self.assert_no_uncommitted_changes(repository_folder)
|
|
2391
2430
|
self.__sc.git_checkout(repository_folder, merge_source_branch)
|
|
2392
|
-
if
|
|
2431
|
+
if "--dependencyupdate" in generic_prepare_new_release_arguments.commandline_arguments:
|
|
2393
2432
|
self.generic_update_dependencies(repository_folder)
|
|
2394
2433
|
self.merge_to_main_branch(repository_folder, merge_source_branch, verbosity=verbosity, fast_forward_source_branch=True)
|
|
2395
2434
|
self.__sc.git_commit(build_repository_folder, "Updated submodule due to merge to main-branch.")
|
|
@@ -2401,7 +2440,7 @@ class TasksForCommonProjectStructure:
|
|
|
2401
2440
|
artifacts_target_folder: str
|
|
2402
2441
|
commandline_arguments: list[str]
|
|
2403
2442
|
|
|
2404
|
-
def __init__(self, current_file: str, product_name: str, common_remote_name: str, artifacts_target_folder: str,commandline_arguments: list[str]):
|
|
2443
|
+
def __init__(self, current_file: str, product_name: str, common_remote_name: str, artifacts_target_folder: str, commandline_arguments: list[str]):
|
|
2405
2444
|
self.current_file = current_file
|
|
2406
2445
|
self.product_name = product_name
|
|
2407
2446
|
self.common_remote_name = common_remote_name
|
|
@@ -2409,7 +2448,7 @@ class TasksForCommonProjectStructure:
|
|
|
2409
2448
|
self.commandline_arguments = commandline_arguments
|
|
2410
2449
|
|
|
2411
2450
|
@GeneralUtilities.check_arguments
|
|
2412
|
-
def generic_create_release(self, generic_create_release_arguments:GenericCreateReleaseArguments) -> str:
|
|
2451
|
+
def generic_create_release(self, generic_create_release_arguments: GenericCreateReleaseArguments) -> str:
|
|
2413
2452
|
folder_of_this_file = os.path.dirname(generic_create_release_arguments.current_file)
|
|
2414
2453
|
build_repository_folder = GeneralUtilities.resolve_relative_path("../..", folder_of_this_file)
|
|
2415
2454
|
repository_folder_name = generic_create_release_arguments.product_name
|
|
@@ -2418,10 +2457,18 @@ class TasksForCommonProjectStructure:
|
|
|
2418
2457
|
verbosity: int = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(generic_create_release_arguments.commandline_arguments, 1)
|
|
2419
2458
|
createReleaseConfiguration: CreateReleaseConfiguration = CreateReleaseConfiguration(
|
|
2420
2459
|
generic_create_release_arguments.product_name, generic_create_release_arguments.common_remote_name, generic_create_release_arguments.artifacts_target_folder, folder_of_this_file, verbosity, repository_folder, additional_arguments_file, repository_folder_name)
|
|
2460
|
+
|
|
2461
|
+
reference_repo: str = os.path.join(build_repository_folder, "Submodules", f"{generic_create_release_arguments.product_name}Reference")
|
|
2462
|
+
self.__sc.git_commit(reference_repo, "Updated reference")
|
|
2463
|
+
|
|
2421
2464
|
self.__sc.git_commit(build_repository_folder, "Updated submodule")
|
|
2422
2465
|
|
|
2423
2466
|
# create release
|
|
2424
2467
|
new_version = self.merge_to_stable_branch(generic_create_release_arguments.current_file, createReleaseConfiguration)
|
|
2468
|
+
|
|
2469
|
+
merge_source_branch = "other/next-release"
|
|
2470
|
+
self.__sc.git_checkout(repository_folder, merge_source_branch)
|
|
2471
|
+
|
|
2425
2472
|
return new_version
|
|
2426
2473
|
|
|
2427
2474
|
class UpdateHTTPDocumentationArguments:
|
|
@@ -40,7 +40,7 @@ class CertificateUpdater:
|
|
|
40
40
|
print(filenames)
|
|
41
41
|
numbers = [int(file[len("privkey"):]) for file in filenames]
|
|
42
42
|
# numbers=[]
|
|
43
|
-
#print([os.path.basename(file) for file in filenames])
|
|
43
|
+
# print([os.path.basename(file) for file in filenames])
|
|
44
44
|
result = max(numbers)
|
|
45
45
|
return result
|
|
46
46
|
|
|
@@ -108,7 +108,7 @@ class CertificateUpdater:
|
|
|
108
108
|
dockerargument = f"run --name {certbot_container_name} --volume {self.__letsencrypt_folder}:/etc/letsencrypt"
|
|
109
109
|
dockerargument = dockerargument+f" --volume {self.__log_folder}:/var/log/letsencrypt -p 80:80 certbot/certbot:latest"
|
|
110
110
|
certbotargument = f"--standalone --email {self.__email} --agree-tos --force-renewal --rsa-key-size 4096 --non-interactive --no-eff-email --domain {domain}"
|
|
111
|
-
if(certificate_for_domain_already_exists):
|
|
111
|
+
if (certificate_for_domain_already_exists):
|
|
112
112
|
self.__sc.run_program("docker", f"{dockerargument} certonly --no-random-sleep-on-renew {certbotargument}", self.__current_folder, throw_exception_if_exitcode_is_not_zero=True)
|
|
113
113
|
self.__replace_symlinks_by_files(domain)
|
|
114
114
|
else:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ScriptCollection
|
|
3
|
-
Version: 3.5.
|
|
3
|
+
Version: 3.5.4
|
|
4
4
|
Summary: The ScriptCollection is the place for reusable scripts.
|
|
5
5
|
Home-page: https://github.com/anionDev/ScriptCollection
|
|
6
6
|
Author: Marius Göcke
|
|
@@ -37,6 +37,7 @@ Requires-Dist: pylint >=3.2.0
|
|
|
37
37
|
Requires-Dist: pyOpenSSL >=24.1.0
|
|
38
38
|
Requires-Dist: PyPDF2 >=3.0.1
|
|
39
39
|
Requires-Dist: pytest >=8.2.0
|
|
40
|
+
Requires-Dist: PyYAML >=6.0.1
|
|
40
41
|
Requires-Dist: qrcode >=7.4.2
|
|
41
42
|
Requires-Dist: send2trash >=1.8.3
|
|
42
43
|
Requires-Dist: twine >=5.0.0
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
ScriptCollection/Executables.py,sha256=PXXsKmof-Lw4gQcQ8IL0diYiU535FVxJfHRdAY7EntA,19233
|
|
2
|
+
ScriptCollection/GeneralUtilities.py,sha256=Mcp6ghb6AbS1KsOjEnRw3x4a4mBrAZ6DAjV2j8-LZFM,35589
|
|
3
|
+
ScriptCollection/ProcessesRunner.py,sha256=3mu4ZxzZleQo0Op6o9EYTCFiJfb6kx5ov2YfZfT89mU,1395
|
|
4
|
+
ScriptCollection/ProgramRunnerBase.py,sha256=W4MaDroJHARRtcvPkBC2AS_qgDSRIqOkMvGyycZjtPk,2371
|
|
5
|
+
ScriptCollection/ProgramRunnerEpew.py,sha256=lx_jR3W8KavBpZo44u2FrOca_EWWgUb3_w_YKGRrAyM,6471
|
|
6
|
+
ScriptCollection/ProgramRunnerPopen.py,sha256=5QFplojwfGS8_WdYrg5nE6__QFB5iaMA0EP8OGfgPoY,3526
|
|
7
|
+
ScriptCollection/RPStream.py,sha256=NRRHL3YSP3D9MuAV2jB_--0KUKCsvJGxeKnxgrRZ9kY,1545
|
|
8
|
+
ScriptCollection/ScriptCollectionCore.py,sha256=AxOvDgrExHfoBNBqRQbDtTdqOjvEfIhmRUKanNwZYCc,97562
|
|
9
|
+
ScriptCollection/TasksForCommonProjectStructure.py,sha256=JLp43wCRcY62rC0UErBCPOHQaKh6Ujtj3sDTxq3cz54,177788
|
|
10
|
+
ScriptCollection/UpdateCertificates.py,sha256=lfmVuify-Fqq-vGJusDDUsJVhA-rVLwW2Jx9iLwmkBo,7916
|
|
11
|
+
ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
ScriptCollection-3.5.4.dist-info/METADATA,sha256=u8vV56vbKQP8FoiLLJM4Q_nZ0qTd6NMlHMQDjddK4ZQ,7679
|
|
13
|
+
ScriptCollection-3.5.4.dist-info/WHEEL,sha256=-oYQCr74JF3a37z2nRlQays_SX2MqOANoqVjBBAP2yE,91
|
|
14
|
+
ScriptCollection-3.5.4.dist-info/entry_points.txt,sha256=dwvB9HRGvqst5xlYIGmmwuFN7lBKhxvndmnNrQOfu8w,2153
|
|
15
|
+
ScriptCollection-3.5.4.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
|
16
|
+
ScriptCollection-3.5.4.dist-info/RECORD,,
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
ScriptCollection/Executables.py,sha256=PXXsKmof-Lw4gQcQ8IL0diYiU535FVxJfHRdAY7EntA,19233
|
|
2
|
-
ScriptCollection/GeneralUtilities.py,sha256=Mcp6ghb6AbS1KsOjEnRw3x4a4mBrAZ6DAjV2j8-LZFM,35589
|
|
3
|
-
ScriptCollection/ProgramRunnerBase.py,sha256=W4MaDroJHARRtcvPkBC2AS_qgDSRIqOkMvGyycZjtPk,2371
|
|
4
|
-
ScriptCollection/ProgramRunnerEpew.py,sha256=lx_jR3W8KavBpZo44u2FrOca_EWWgUb3_w_YKGRrAyM,6471
|
|
5
|
-
ScriptCollection/ProgramRunnerPopen.py,sha256=5QFplojwfGS8_WdYrg5nE6__QFB5iaMA0EP8OGfgPoY,3526
|
|
6
|
-
ScriptCollection/ScriptCollectionCore.py,sha256=XZ27_3LwElxYJpbSGt8HKuFJ3nbkdl6iY7MCk4xop7k,99240
|
|
7
|
-
ScriptCollection/TasksForCommonProjectStructure.py,sha256=CDVhsAJfRt_bQr4aYGtg1PD1Dl41EAMHNhD5sdiznWM,175039
|
|
8
|
-
ScriptCollection/UpdateCertificates.py,sha256=3C_E9og5SZec35aD3BFYLchzJtonsg1KR4enFCb5Jzk,7914
|
|
9
|
-
ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
ScriptCollection-3.5.3.dist-info/METADATA,sha256=LywbFi47FasPv7OMXGLtKv3kq9YRuozOBanMzEJnF2I,7648
|
|
11
|
-
ScriptCollection-3.5.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
12
|
-
ScriptCollection-3.5.3.dist-info/entry_points.txt,sha256=dwvB9HRGvqst5xlYIGmmwuFN7lBKhxvndmnNrQOfu8w,2153
|
|
13
|
-
ScriptCollection-3.5.3.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
|
14
|
-
ScriptCollection-3.5.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|