ScriptCollection 4.2.60__py3-none-any.whl → 4.2.62__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.
@@ -36,7 +36,7 @@ from .ProgramRunnerBase import ProgramRunnerBase
36
36
  from .ProgramRunnerPopen import ProgramRunnerPopen
37
37
  from .SCLog import SCLog, LogLevel
38
38
 
39
- version = "4.2.60"
39
+ version = "4.2.62"
40
40
  __version__ = version
41
41
 
42
42
  class VSCodeWorkspaceShellTask:
@@ -1657,25 +1657,16 @@ class ScriptCollectionCore:
1657
1657
  self.run_program("docker", f"container rm -f {container_name}")
1658
1658
 
1659
1659
  @GeneralUtilities.check_arguments
1660
- def get_docker_debian_version(self, image_tag: str) -> str:
1661
- result = ScriptCollectionCore().run_program_argsasarray("docker", ['run', f'debian:{image_tag}', 'bash', '-c', 'apt-get -y update && apt-get -y install lsb-release && lsb_release -cs'])
1662
- result_line = GeneralUtilities.string_to_lines(result[1])[-1]
1663
- return result_line
1660
+ def get_latest_apt_package_version_in_debian(self, image: str,package) -> str:
1661
+ #docker run --rm -it debian:13.4-slim bash -c "apt update && apt list -a tor"
1662
+ output=self.run_with_epew("docker", f"run --rm -it {image} bash -c \"apt --color=false update && apt --color=false list -a tor\"",os.getcwd(),encode_argument_in_base64=True)
1663
+ stdout=output[1]
1664
+ version_line=[line.strip() for line in GeneralUtilities.string_to_lines(stdout) if GeneralUtilities.string_has_nonwhitespace_content(line) and line.startswith(package+"/")]
1665
+ GeneralUtilities.assert_condition(len(version_line) ==1, f"No version found for package '{package}' in image '{image}'.")
1666
+ result = version_line[0].split(" ")[1]
1667
+ return result
1664
1668
 
1665
1669
  @GeneralUtilities.check_arguments
1666
- def get_latest_tor_version_of_debian_repository(self, debian_version: str) -> str:
1667
- package_url: str = f"https://deb.torproject.org/torproject.org/dists/{debian_version}/main/binary-amd64/Packages"
1668
- headers = {'Cache-Control': 'no-cache'}
1669
- r = requests.get(package_url, timeout=5, headers=headers)
1670
- if r.status_code != 200:
1671
- raise ValueError(f"Checking for latest tor package resulted in HTTP-response-code {r.status_code}.")
1672
- lines = GeneralUtilities.string_to_lines(GeneralUtilities.bytes_to_string(r.content))
1673
- version_line_prefix = "Version: "
1674
- version_content_line = [line for line in lines if line.startswith(version_line_prefix)][1]
1675
- version_with_overhead = version_content_line[len(version_line_prefix):]
1676
- tor_version = version_with_overhead.split("~")[0]
1677
- return tor_version
1678
-
1679
1670
  def run_testcases_for_python_project(self, repository_folder: str):
1680
1671
  self.assert_is_git_repository(repository_folder)
1681
1672
  self.run_program("coverage", "run -m pytest", repository_folder)
@@ -1213,15 +1213,14 @@ class TFCPS_Tools_General:
1213
1213
  image_address for example: "myregistry.example.com/myapp"
1214
1214
  tag for example: "1.0.0"
1215
1215
  """
1216
+ GeneralUtilities.write_message_to_stdout(f"Creating multi-arch artifact {image_address}:{tag}...")
1216
1217
  arch_tags = []
1217
-
1218
1218
  for tar_path, os_name, arch in tar_files:
1219
1219
  arch_tag = f"{image_address}:{tag}-{os_name}-{arch}"
1220
1220
  arch_tags.append(arch_tag)
1221
-
1222
1221
  # Load tar → local image
1223
- print(f"Loading {tar_path}...")
1224
- result = self.__sc.run_program_argsasarray("docker",[ "load", "-i", tar_path], capture_output=True)
1222
+ GeneralUtilities.write_message_to_stdout(f"Loading {tar_path}...")
1223
+ result = self.__sc.run_program_argsasarray("docker",[ "load", "-i", tar_path])
1225
1224
  # docker load outputs: "Loaded image: sha256:abc123..." or "Loaded image ID: ..."
1226
1225
  # we need the loaded image ID
1227
1226
  loaded_id = None
@@ -1229,19 +1228,15 @@ class TFCPS_Tools_General:
1229
1228
  if "Loaded image" in line:
1230
1229
  loaded_id = line.split(":", 1)[1].strip()
1231
1230
  break
1232
-
1233
1231
  if not loaded_id:
1234
1232
  raise RuntimeError(f"Could not determine loaded image from output: \"{result[1]}\"")
1235
-
1236
1233
  # Retag + push
1237
1234
  self.__sc.run_program_argsasarray("docker",[ "tag", loaded_id, arch_tag])
1238
1235
  self.__sc.run_program_argsasarray("docker",[ "push", arch_tag])
1239
-
1240
1236
  # Create multi-arch manifest
1241
1237
  final_tag = f"{image_address}:{tag}"
1242
1238
  self.__sc.run_program_argsasarray("docker", [ "buildx", "imagetools", "create", "--tag", final_tag] + arch_tags)
1243
1239
 
1244
-
1245
1240
  @GeneralUtilities.check_arguments
1246
1241
  def platform_from_filename(self,filename: str) -> Platform:
1247
1242
  match = re.search(r'_([^_]+)\.tar', filename)
@@ -1520,3 +1515,7 @@ class TFCPS_Tools_General:
1520
1515
  source=f"https://raw.githubusercontent.com/anionDev/CommonProjectStructureExamples/refs/heads/main/Other/Reference/RepositoryStructure.mdd"
1521
1516
  target=f"{repository_folder}/Other/Reference/RepositoryStructure.md"
1522
1517
  self.download_file(source,target)
1518
+
1519
+
1520
+ def update_dependent_oci_images(self,repo:str):
1521
+ pass#TODO update all image-tags in repo/.ScriptCollection/OCIImages/ImageDefinition.csv if possible using the custom defined registries in ~/.ScriptCollection if possible.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ScriptCollection
3
- Version: 4.2.60
3
+ Version: 4.2.62
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
@@ -9,7 +9,7 @@ ScriptCollection/ProgramRunnerMock.py,sha256=uTu-aFle1W_oKjeQEmuPsFPQpvo0kRf2FrR
9
9
  ScriptCollection/ProgramRunnerPopen.py,sha256=BPY7-ZMIlqT7JOKz8qlB5c0laF2Js-ijzqk09GxZC48,3821
10
10
  ScriptCollection/ProgramRunnerSudo.py,sha256=_khC3xuTdrPoLluBJZWfldltmmuKltABJPcbjZSFW-4,4835
11
11
  ScriptCollection/SCLog.py,sha256=8TRy1LeYMsPOIuWUcnUNNbO5pd-cNBS-3cn-kdzP8FU,4768
12
- ScriptCollection/ScriptCollectionCore.py,sha256=k9Jxim56NM5dr6wAZrITk-bxZhKKxeXi1gb1zkfcDUo,176930
12
+ ScriptCollection/ScriptCollectionCore.py,sha256=TKeOKBIdL-4wCdt__7tN8xBADf2vHxgudGdnswpxAG8,176461
13
13
  ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  ScriptCollection/OCIImages/AbstractImageHandler.py,sha256=83qDMILwxhH9DbC0sb358Vu8PXEysmJJyap_6gECZqs,1627
15
15
  ScriptCollection/OCIImages/OCIImageManager.py,sha256=aBogkSXNDyi8NO11N-s03nuFJEv7PyJ-wjHuYYeZfvs,6662
@@ -30,7 +30,7 @@ ScriptCollection/TFCPS/TFCPS_Generic.py,sha256=O-0guM_LJCcZmPZJhMgTvXD2RXUJEBWWv
30
30
  ScriptCollection/TFCPS/TFCPS_MergeToMain.py,sha256=-Ev9D3bZDlUk2WFQhcmvzQ3FCS97OdsVUd0koAdmpZc,7474
31
31
  ScriptCollection/TFCPS/TFCPS_MergeToStable.py,sha256=Ajfy2pLajTuU6UpwItHt4C2a-gLF3gPc4z6BktL3Cio,22163
32
32
  ScriptCollection/TFCPS/TFCPS_PreBuildCodeunitsScript.py,sha256=f0Uq1cA_4LvmL72cal0crrbKF6PcxL13D9wBKuQ1YBw,2328
33
- ScriptCollection/TFCPS/TFCPS_Tools_General.py,sha256=RCwtEwuZUds-gyHa2qCitWZUgapM3-IZJKF9e5Zwxck,98000
33
+ ScriptCollection/TFCPS/TFCPS_Tools_General.py,sha256=3XOc6eYBfmzpEKmmvpH-kCYymzLj3NRXhgUJXzkUOnI,98348
34
34
  ScriptCollection/TFCPS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  ScriptCollection/TFCPS/Docker/TFCPS_CodeUnitSpecific_Docker.py,sha256=xMuj-GoEwDnmUWbmdF536dNQL7jnTaw9aQ-gcDqUkgQ,11743
36
36
  ScriptCollection/TFCPS/Docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -47,8 +47,8 @@ ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py,sha256=kL37qJNwH6
47
47
  ScriptCollection/TFCPS/NodeJS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  ScriptCollection/TFCPS/Python/TFCPS_CodeUnitSpecific_Python.py,sha256=KFKDdfV9DFHE5n7TI6m1Ra1Qw2JwL_JQjneBfqcRQ_w,13467
49
49
  ScriptCollection/TFCPS/Python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- scriptcollection-4.2.60.dist-info/METADATA,sha256=dQYQcvTQgiDemUjezOsxBCyPOkzYt6DkBe7HSGQUxf4,7690
51
- scriptcollection-4.2.60.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
52
- scriptcollection-4.2.60.dist-info/entry_points.txt,sha256=27XwAJEcaMEc1be0Ec1vKHCbiU4Ziu8jKL-SqsrYOIQ,4680
53
- scriptcollection-4.2.60.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
54
- scriptcollection-4.2.60.dist-info/RECORD,,
50
+ scriptcollection-4.2.62.dist-info/METADATA,sha256=qK2TKc3JjC_aXbaHw5oWttsm-s3c1D-jqITQJDNqIsU,7690
51
+ scriptcollection-4.2.62.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
52
+ scriptcollection-4.2.62.dist-info/entry_points.txt,sha256=27XwAJEcaMEc1be0Ec1vKHCbiU4Ziu8jKL-SqsrYOIQ,4680
53
+ scriptcollection-4.2.62.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
54
+ scriptcollection-4.2.62.dist-info/RECORD,,