ScriptCollection 3.5.150__py3-none-any.whl → 3.5.152__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/ScriptCollectionCore.py +1 -1
- ScriptCollection/TasksForCommonProjectStructure.py +83 -25
- {scriptcollection-3.5.150.dist-info → scriptcollection-3.5.152.dist-info}/METADATA +2 -2
- {scriptcollection-3.5.150.dist-info → scriptcollection-3.5.152.dist-info}/RECORD +7 -7
- {scriptcollection-3.5.150.dist-info → scriptcollection-3.5.152.dist-info}/entry_points.txt +1 -2
- {scriptcollection-3.5.150.dist-info → scriptcollection-3.5.152.dist-info}/WHEEL +0 -0
- {scriptcollection-3.5.150.dist-info → scriptcollection-3.5.152.dist-info}/top_level.txt +0 -0
@@ -240,10 +240,9 @@ class TasksForCommonProjectStructure:
|
|
240
240
|
@GeneralUtilities.check_arguments
|
241
241
|
def copy_source_files_to_output_directory(self, buildscript_file: str) -> None:
|
242
242
|
GeneralUtilities.write_message_to_stdout("Copy sourcecode...")
|
243
|
-
sc = ScriptCollectionCore()
|
244
243
|
folder = os.path.dirname(os.path.realpath(buildscript_file))
|
245
244
|
codeunit_folder = GeneralUtilities.resolve_relative_path("../..", folder)
|
246
|
-
result =
|
245
|
+
result = self.__sc.run_program_argsasarray("git", ["ls-tree", "-r", "HEAD", "--name-only"], codeunit_folder)
|
247
246
|
files = [f for f in result[1].split('\n') if len(f) > 0]
|
248
247
|
for file in files:
|
249
248
|
full_source_file = os.path.join(codeunit_folder, file)
|
@@ -271,7 +270,6 @@ class TasksForCommonProjectStructure:
|
|
271
270
|
}
|
272
271
|
for target in targets:
|
273
272
|
GeneralUtilities.write_message_to_stdout(f"Build package {package_name} for target {target_names[target]}...")
|
274
|
-
sc = ScriptCollectionCore()
|
275
273
|
self.run_with_epew("flutter", f"build {target}", src_folder, verbosity)
|
276
274
|
if target == "web":
|
277
275
|
web_relase_folder = os.path.join(src_folder, "build/web")
|
@@ -300,7 +298,7 @@ class TasksForCommonProjectStructure:
|
|
300
298
|
GeneralUtilities.ensure_directory_does_not_exist(apk_folder)
|
301
299
|
GeneralUtilities.ensure_directory_exists(apk_folder)
|
302
300
|
apks_file = f"{apk_folder}/{codeunit_name}.apks"
|
303
|
-
|
301
|
+
self.__sc.run_program("java", f"-jar {bundletool} build-apks --bundle={aab_file} --output={apks_file} --mode=universal", aab_relase_folder, verbosity)
|
304
302
|
with zipfile.ZipFile(apks_file, "r") as zip_ref:
|
305
303
|
zip_ref.extract("universal.apk", apk_folder)
|
306
304
|
GeneralUtilities.ensure_file_does_not_exist(apks_file)
|
@@ -485,8 +483,7 @@ class TasksForCommonProjectStructure:
|
|
485
483
|
self.write_version_to_codeunit_file(codeunit_file, current_version)
|
486
484
|
|
487
485
|
@GeneralUtilities.check_arguments
|
488
|
-
def t4_transform(self, commontasks_script_file_of_current_file: str, verbosity: int):
|
489
|
-
sc = ScriptCollectionCore()
|
486
|
+
def t4_transform(self, commontasks_script_file_of_current_file: str, verbosity: int, ignore_git_ignored_files: bool = True):
|
490
487
|
codeunit_folder = GeneralUtilities.resolve_relative_path("../..", commontasks_script_file_of_current_file)
|
491
488
|
self.__ensure_grylibrary_is_available(codeunit_folder)
|
492
489
|
repository_folder: str = os.path.dirname(codeunit_folder)
|
@@ -494,9 +491,19 @@ class TasksForCommonProjectStructure:
|
|
494
491
|
codeunit_folder = os.path.join(repository_folder, codeunitname)
|
495
492
|
for search_result in Path(codeunit_folder).glob('**/*.tt'):
|
496
493
|
tt_file = str(search_result)
|
497
|
-
|
498
|
-
|
499
|
-
|
494
|
+
relative_path_to_tt_file_from_repository = str(Path(tt_file).relative_to(repository_folder))
|
495
|
+
if (not ignore_git_ignored_files) or (ignore_git_ignored_files and not self.__sc.file_is_git_ignored(relative_path_to_tt_file_from_repository, repository_folder)):
|
496
|
+
relative_path_to_tt_file_from_codeunit_file = str(Path(tt_file).relative_to(codeunit_folder))
|
497
|
+
argument = [f"--parameter=repositoryFolder={repository_folder}", f"--parameter=codeUnitName={codeunitname}", relative_path_to_tt_file_from_codeunit_file]
|
498
|
+
self.__sc.run_program_argsasarray("t4", argument, codeunit_folder, verbosity=verbosity)
|
499
|
+
|
500
|
+
@GeneralUtilities.check_arguments
|
501
|
+
def get_resource_from_global_resource(self, codeunit_folder: str, resource_name: str):
|
502
|
+
repository_folder: str = GeneralUtilities.resolve_relative_path("..", codeunit_folder)
|
503
|
+
source_folder: str = os.path.join(repository_folder, "Other", "Resources", resource_name)
|
504
|
+
target_folder: str = os.path.join(codeunit_folder, "Other", "Resources", resource_name)
|
505
|
+
GeneralUtilities.ensure_folder_exists_and_is_empty(target_folder)
|
506
|
+
GeneralUtilities.copy_content_of_folder(source_folder, target_folder)
|
500
507
|
|
501
508
|
@GeneralUtilities.check_arguments
|
502
509
|
def standardized_tasks_generate_reference_by_docfx(self, generate_reference_script_file: str, verbosity: int, targetenvironmenttype: str, commandline_arguments: list[str]) -> None:
|
@@ -780,10 +787,9 @@ class TasksForCommonProjectStructure:
|
|
780
787
|
GeneralUtilities.write_message_to_stdout("Generate SBOM...")
|
781
788
|
self.assert_is_codeunit_folder(codeunit_folder)
|
782
789
|
codeunit_name = os.path.basename(codeunit_folder)
|
783
|
-
sc = ScriptCollectionCore()
|
784
790
|
bomfile_folder = "Other\\Artifacts\\BOM"
|
785
791
|
verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
786
|
-
|
792
|
+
self.__sc.run_program_argsasarray("dotnet", ["CycloneDX", f"{codeunit_name}\\{codeunit_name}.csproj", "-o", bomfile_folder, "--disable-github-licenses"], codeunit_folder, verbosity=verbosity)
|
787
793
|
codeunitversion = self.get_version_of_codeunit(os.path.join(codeunit_folder, f"{codeunit_name}.codeunit.xml"))
|
788
794
|
target = f"{codeunit_folder}\\{bomfile_folder}\\{codeunit_name}.{codeunitversion}.sbom.xml"
|
789
795
|
GeneralUtilities.ensure_file_does_not_exist(target)
|
@@ -1454,8 +1460,7 @@ class TasksForCommonProjectStructure:
|
|
1454
1460
|
codeunit_folder = os.path.join(repository_folder, codeunitname)
|
1455
1461
|
artifacts_folder = self.get_artifacts_folder(repository_folder, codeunitname)
|
1456
1462
|
applicationimage_folder = os.path.join(artifacts_folder, "BuildResult_OCIImage")
|
1457
|
-
|
1458
|
-
image_file = sc.find_file_by_extension(applicationimage_folder, "tar")
|
1463
|
+
image_file = self.__sc.find_file_by_extension(applicationimage_folder, "tar")
|
1459
1464
|
image_filename = os.path.basename(image_file)
|
1460
1465
|
codeunit_version = self.get_version_of_codeunit(os.path.join(codeunit_folder, f"{codeunitname}.codeunit.xml"))
|
1461
1466
|
if remote_image_name is None:
|
@@ -1466,15 +1471,15 @@ class TasksForCommonProjectStructure:
|
|
1466
1471
|
remote_image_latest = f"{remote_repo}:latest"
|
1467
1472
|
remote_image_version = f"{remote_repo}:{codeunit_version}"
|
1468
1473
|
GeneralUtilities.write_message_to_stdout("Load image...")
|
1469
|
-
|
1474
|
+
self.__sc.run_program("docker", f"load --input {image_filename}", applicationimage_folder, verbosity=verbosity)
|
1470
1475
|
GeneralUtilities.write_message_to_stdout("Tag image...")
|
1471
|
-
|
1472
|
-
|
1476
|
+
self.__sc.run_program("docker", f"tag {local_image_name}:{codeunit_version} {remote_image_latest}", verbosity=verbosity)
|
1477
|
+
self.__sc.run_program("docker", f"tag {local_image_name}:{codeunit_version} {remote_image_version}", verbosity=verbosity)
|
1473
1478
|
GeneralUtilities.write_message_to_stdout("Push image...")
|
1474
|
-
|
1475
|
-
|
1479
|
+
self.__sc.run_program("docker", f"push {remote_image_latest}", verbosity=verbosity)
|
1480
|
+
self.__sc.run_program("docker", f"push {remote_image_version}", verbosity=verbosity)
|
1476
1481
|
if push_readme:
|
1477
|
-
|
1482
|
+
self.__sc.run_program("docker-pushrm", f"{remote_repo}", codeunit_folder, verbosity=verbosity)
|
1478
1483
|
|
1479
1484
|
@GeneralUtilities.check_arguments
|
1480
1485
|
def get_dependent_code_units(self, codeunit_file: str) -> list[str]:
|
@@ -1756,7 +1761,7 @@ class TasksForCommonProjectStructure:
|
|
1756
1761
|
@GeneralUtilities.check_arguments
|
1757
1762
|
def get_version_of_project(self, repository_folder: str) -> str:
|
1758
1763
|
self.__sc.assert_is_git_repository(repository_folder)
|
1759
|
-
return
|
1764
|
+
return self.__sc.get_semver_version_from_gitversion(repository_folder)
|
1760
1765
|
|
1761
1766
|
@GeneralUtilities.check_arguments
|
1762
1767
|
def replace_common_variables_in_nuspec_file(self, codeunit_folder: str) -> None:
|
@@ -2207,7 +2212,7 @@ class TasksForCommonProjectStructure:
|
|
2207
2212
|
openapi_spec_file = os.path.join(codeunit_folder, "Other", "Resources", "DependentCodeUnits", name_of_api_providing_codeunit, "APISpecification", f"{name_of_api_providing_codeunit}.latest.api.json")
|
2208
2213
|
target_folder = os.path.join(codeunit_folder, target_subfolder_in_codeunit)
|
2209
2214
|
GeneralUtilities.ensure_folder_exists_and_is_empty(target_folder)
|
2210
|
-
|
2215
|
+
self.__sc.run_program("java", f'-jar {openapigenerator_jar_file} generate -i {openapi_spec_file} -g {language} -o {target_folder} --global-property supportingFiles --global-property models --global-property apis', codeunit_folder)
|
2211
2216
|
|
2212
2217
|
@GeneralUtilities.check_arguments
|
2213
2218
|
def generate_api_client_from_dependent_codeunit_in_dotnet(self, file: str, name_of_api_providing_codeunit: str, base_namespace: str) -> None:
|
@@ -2225,7 +2230,7 @@ class TasksForCommonProjectStructure:
|
|
2225
2230
|
openapi_spec_file = os.path.join(codeunit_folder, "Other", "Resources", "DependentCodeUnits", name_of_api_providing_codeunit, "APISpecification", f"{name_of_api_providing_codeunit}.latest.api.json")
|
2226
2231
|
target_folder = os.path.join(codeunit_folder, target_subfolder_in_codeunit)
|
2227
2232
|
GeneralUtilities.ensure_directory_exists(target_folder)
|
2228
|
-
|
2233
|
+
self.__sc.run_program("java", f'-jar {openapigenerator_jar_file} generate -i {openapi_spec_file} -g {language} -o {target_folder} --global-property supportingFiles --global-property models --global-property apis {additional_properties}', codeunit_folder)
|
2229
2234
|
|
2230
2235
|
# move docs to correct folder
|
2231
2236
|
target_folder_docs = os.path.join(target_folder, "docs")
|
@@ -2922,13 +2927,12 @@ class TasksForCommonProjectStructure:
|
|
2922
2927
|
|
2923
2928
|
@GeneralUtilities.check_arguments
|
2924
2929
|
def __generate_svg_files_from_plantuml(self, diagrams_files_folder: str, plant_uml_folder: str) -> None:
|
2925
|
-
sc = ScriptCollectionCore()
|
2926
2930
|
for file in GeneralUtilities.get_all_files_of_folder(diagrams_files_folder):
|
2927
2931
|
if file.endswith(".plantuml"):
|
2928
2932
|
output_filename = self.get_output_filename_for_plantuml_filename(file)
|
2929
2933
|
argument = ['-jar', f'{plant_uml_folder}/plantuml.jar', '-tsvg', os.path.basename(file)]
|
2930
2934
|
folder = os.path.dirname(file)
|
2931
|
-
|
2935
|
+
self.__sc.run_program_argsasarray("java", argument, folder, verbosity=0)
|
2932
2936
|
result_file = folder+"/" + output_filename
|
2933
2937
|
GeneralUtilities.assert_file_exists(result_file)
|
2934
2938
|
self.__sc.format_xml_file(result_file)
|
@@ -3026,7 +3030,7 @@ class TasksForCommonProjectStructure:
|
|
3026
3030
|
artifacts_folder = os.path.join(codeunit_folder, "Other", "Artifacts", artifact_name_of_zip)
|
3027
3031
|
manifest_folder = os.path.join(codeunit_folder, "Other", "Artifacts", "WinGet-Manifest")
|
3028
3032
|
GeneralUtilities.assert_folder_exists(artifacts_folder)
|
3029
|
-
artifacts_file =
|
3033
|
+
artifacts_file = self.__sc.find_file_by_extension(artifacts_folder, "zip")
|
3030
3034
|
winget_template_file = os.path.join(build_folder, "WinGet-Template.yaml")
|
3031
3035
|
winget_manifest_file = os.path.join(manifest_folder, "WinGet-Manifest.yaml")
|
3032
3036
|
GeneralUtilities.assert_file_exists(winget_template_file)
|
@@ -3461,3 +3465,57 @@ class TasksForCommonProjectStructure:
|
|
3461
3465
|
excluded = ["opendms"]
|
3462
3466
|
iu.update_all_services_in_docker_compose_file(dockercomposefile, VersionEcholon.LatestPatchOrLatestMinor, excluded)
|
3463
3467
|
iu.check_for_newest_version(dockercomposefile, excluded)
|
3468
|
+
|
3469
|
+
|
3470
|
+
@GeneralUtilities.check_arguments
|
3471
|
+
def clone_repository_as_resource(self, local_repository_folder: str, remote_repository_link: str, resource_name: str, repository_subname: str = None) -> None:
|
3472
|
+
resrepo_commit_id_folder: str = os.path.join(local_repository_folder, "Other", "Resources", f"{resource_name}Version")
|
3473
|
+
resrepo_commit_id_file: str = os.path.join(resrepo_commit_id_folder, f"{resource_name}Version.txt")
|
3474
|
+
latest_version: str = GeneralUtilities.read_text_from_file(resrepo_commit_id_file)
|
3475
|
+
resrepo_data_folder: str = os.path.join(local_repository_folder, "Other", "Resources", resource_name).replace("\\", "/")
|
3476
|
+
current_version: str = None
|
3477
|
+
resrepo_data_version: str = os.path.join(resrepo_data_folder, f"{resource_name}Version.txt")
|
3478
|
+
if os.path.isdir(resrepo_data_folder):
|
3479
|
+
if os.path.isfile(resrepo_data_version):
|
3480
|
+
current_version = GeneralUtilities.read_text_from_file(resrepo_data_version)
|
3481
|
+
if (current_version is None) or (current_version != latest_version):
|
3482
|
+
target_folder: str = resrepo_data_folder
|
3483
|
+
if repository_subname is not None:
|
3484
|
+
target_folder = f"{resrepo_data_folder}/{repository_subname}"
|
3485
|
+
GeneralUtilities.ensure_folder_exists_and_is_empty(target_folder)
|
3486
|
+
self.__sc.run_program("git", f"clone --recurse-submodules {remote_repository_link} {target_folder}")
|
3487
|
+
self.__sc.run_program("git", f"checkout {latest_version}", target_folder)
|
3488
|
+
GeneralUtilities.write_text_to_file(resrepo_data_version, latest_version)
|
3489
|
+
|
3490
|
+
git_folders: list[str] = []
|
3491
|
+
git_files: list[str] = []
|
3492
|
+
for dirpath, dirnames, filenames in os.walk(target_folder):
|
3493
|
+
for dirname in dirnames:
|
3494
|
+
if dirname == ".git":
|
3495
|
+
full_path = os.path.join(dirpath, dirname)
|
3496
|
+
git_folders.append(full_path)
|
3497
|
+
for filename in filenames:
|
3498
|
+
if filename == ".git":
|
3499
|
+
full_path = os.path.join(dirpath, filename)
|
3500
|
+
git_files.append(full_path)
|
3501
|
+
for git_folder in git_folders:
|
3502
|
+
if os.path.isdir(git_folder):
|
3503
|
+
GeneralUtilities.ensure_directory_does_not_exist(git_folder)
|
3504
|
+
for git_file in git_files:
|
3505
|
+
if os.path.isdir(git_file):
|
3506
|
+
GeneralUtilities.ensure_file_does_not_exist(git_file)
|
3507
|
+
|
3508
|
+
def set_latest_version_for_clone_repository_as_resource(self, resourcename: str, github_link: str, branch: str = "main"):
|
3509
|
+
current_file = str(Path(__file__).absolute())
|
3510
|
+
repository_folder = GeneralUtilities.resolve_relative_path("../../..", current_file)
|
3511
|
+
|
3512
|
+
resrepo_commit_id_folder: str = os.path.join(repository_folder, "Other", "Resources", f"{resourcename}Version")
|
3513
|
+
resrepo_commit_id_file: str = os.path.join(resrepo_commit_id_folder, f"{resourcename}Version.txt")
|
3514
|
+
current_version: str = GeneralUtilities.read_text_from_file(resrepo_commit_id_file)
|
3515
|
+
|
3516
|
+
stdOut = [l.split("\t") for l in GeneralUtilities.string_to_lines(self.__sc.run_program("git", f"ls-remote {github_link}")[1])]
|
3517
|
+
stdOut = [l for l in stdOut if l[1] == f"refs/heads/{branch}"]
|
3518
|
+
GeneralUtilities.assert_condition(len(stdOut) == 1)
|
3519
|
+
latest_version: str = stdOut[0][0]
|
3520
|
+
if current_version != latest_version:
|
3521
|
+
GeneralUtilities.write_text_to_file(resrepo_commit_id_file, latest_version)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ScriptCollection
|
3
|
-
Version: 3.5.
|
3
|
+
Version: 3.5.152
|
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
|
@@ -34,7 +34,7 @@ Requires-Dist: Pillow>=11.3.0
|
|
34
34
|
Requires-Dist: psutil>=7.0.0
|
35
35
|
Requires-Dist: pycdlib>=1.14.0
|
36
36
|
Requires-Dist: Pygments>=2.19.2
|
37
|
-
Requires-Dist: pylint>=3.3.
|
37
|
+
Requires-Dist: pylint>=3.3.8
|
38
38
|
Requires-Dist: pyOpenSSL>=25.1.0
|
39
39
|
Requires-Dist: PyPDF>=5.9.0
|
40
40
|
Requires-Dist: pytest>=8.4.1
|
@@ -7,11 +7,11 @@ ScriptCollection/ProgramRunnerBase.py,sha256=2kMIAqdc65UjBAddOZkzy_aFx9h5roZ5a4b
|
|
7
7
|
ScriptCollection/ProgramRunnerEpew.py,sha256=4pjEd0r9Fcz3TTDv0MdTSd5KkigYXcWUVI1X43regfU,6477
|
8
8
|
ScriptCollection/ProgramRunnerPopen.py,sha256=BPY7-ZMIlqT7JOKz8qlB5c0laF2Js-ijzqk09GxZC48,3821
|
9
9
|
ScriptCollection/SCLog.py,sha256=GJ44S6VaBVwX5Dd6MIrdZn6I0dpaaYKVq9w-N0nMXlo,4496
|
10
|
-
ScriptCollection/ScriptCollectionCore.py,sha256=
|
11
|
-
ScriptCollection/TasksForCommonProjectStructure.py,sha256=
|
10
|
+
ScriptCollection/ScriptCollectionCore.py,sha256=cOswEDwCQ4ndqIz-X0M2lGQD1WBtKLXvjd5aXtyoxUo,138093
|
11
|
+
ScriptCollection/TasksForCommonProjectStructure.py,sha256=_QNBZo_48y6UIGKpeepkrCHNvkCpO6MHB2kakgLBe4k,246625
|
12
12
|
ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
scriptcollection-3.5.
|
14
|
-
scriptcollection-3.5.
|
15
|
-
scriptcollection-3.5.
|
16
|
-
scriptcollection-3.5.
|
17
|
-
scriptcollection-3.5.
|
13
|
+
scriptcollection-3.5.152.dist-info/METADATA,sha256=W5nkU3X26V-6tgI3aFnpzsaaVPOFHYcHQ1iQW2U_ILg,7689
|
14
|
+
scriptcollection-3.5.152.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
15
|
+
scriptcollection-3.5.152.dist-info/entry_points.txt,sha256=AvmVO9iyWImExpvzL3YYQ9AOEiUIN9guPRRG_W_VNWY,4116
|
16
|
+
scriptcollection-3.5.152.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
17
|
+
scriptcollection-3.5.152.dist-info/RECORD,,
|
@@ -28,7 +28,6 @@ scgeneratecertificate = ScriptCollection.Executables:GenerateCertificate
|
|
28
28
|
scgeneratecertificateauthority = ScriptCollection.Executables:GenerateCertificateAuthority
|
29
29
|
scgeneratecertificatesignrequest = ScriptCollection.Executables:GenerateCertificateSignRequest
|
30
30
|
scgeneratesnkfiles = ScriptCollection.Executables:GenerateSnkFiles
|
31
|
-
scgeneratetasksfilefromworkspacefile = ScriptCollection.Executables:GenerateTaskfileFromWorkspacefile
|
32
31
|
scgeneratethumbnail = ScriptCollection.Executables:GenerateThumbnail
|
33
32
|
schealthcheck = ScriptCollection.Executables:Healthcheck
|
34
33
|
sckeyboarddiagnosis = ScriptCollection.Executables:KeyboardDiagnosis
|
@@ -51,7 +50,7 @@ scremovefolder = ScriptCollection.Executables:RemoveFolder
|
|
51
50
|
screname = ScriptCollection.Executables:Rename
|
52
51
|
screplacesubstringsinfilenames = ScriptCollection.Executables:ReplaceSubstringsInFilenames
|
53
52
|
scsearchinfiles = ScriptCollection.Executables:SearchInFiles
|
54
|
-
|
53
|
+
scsetcontentoffile = ScriptCollection.Executables:SetContentOfFile
|
55
54
|
scshow2faasqrcode = ScriptCollection.Executables:Show2FAAsQRCode
|
56
55
|
scshowmissingfiles = ScriptCollection.Executables:ShowMissingFiles
|
57
56
|
scsigncertificate = ScriptCollection.Executables:SignCertificate
|
File without changes
|
File without changes
|