scriptcollection 4.2.81__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/AnionBuildPlatform.py +199 -0
- ScriptCollection/CertificateUpdater.py +149 -0
- ScriptCollection/Executables.py +921 -0
- ScriptCollection/GeneralUtilities.py +1589 -0
- ScriptCollection/HTTPMaintenanceOverheadHelper.py +36 -0
- ScriptCollection/OCIImages/AbstractImageHandler.py +38 -0
- ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerDebian.py +20 -0
- ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerDebianSlim.py +20 -0
- ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerGeneric.py +20 -0
- ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerGenericV.py +20 -0
- ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerGitlabCE.py +20 -0
- ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerGitlabEE.py +20 -0
- ScriptCollection/OCIImages/ConcreteImageHandlers/__init__.py +0 -0
- ScriptCollection/OCIImages/OCIImageManager.py +190 -0
- ScriptCollection/OCIImages/__init__.py +0 -0
- ScriptCollection/ProcessesRunner.py +43 -0
- ScriptCollection/ProgramRunnerBase.py +47 -0
- ScriptCollection/ProgramRunnerMock.py +2 -0
- ScriptCollection/ProgramRunnerPopen.py +57 -0
- ScriptCollection/ProgramRunnerSudo.py +108 -0
- ScriptCollection/Resources/CultureChooser/CultureChooser.js +29 -0
- ScriptCollection/Resources/CultureChooser/index.html +15 -0
- ScriptCollection/Resources/MaintenanceSite/MaintenanceSite.html +15 -0
- ScriptCollection/SCLog.py +115 -0
- ScriptCollection/ScriptCollectionCore.py +3485 -0
- ScriptCollection/TFCPS/Docker/TFCPS_CodeUnitSpecific_Docker.py +192 -0
- ScriptCollection/TFCPS/Docker/__init__.py +0 -0
- ScriptCollection/TFCPS/DotNet/CertificateGeneratorInformationBase.py +8 -0
- ScriptCollection/TFCPS/DotNet/CertificateGeneratorInformationGenerate.py +6 -0
- ScriptCollection/TFCPS/DotNet/CertificateGeneratorInformationNoGenerate.py +7 -0
- ScriptCollection/TFCPS/DotNet/TFCPS_CodeUnitSpecific_DotNet.py +547 -0
- ScriptCollection/TFCPS/DotNet/__init__.py +0 -0
- ScriptCollection/TFCPS/Flutter/TFCPS_CodeUnitSpecific_Flutter.py +137 -0
- ScriptCollection/TFCPS/Flutter/__init__.py +0 -0
- ScriptCollection/TFCPS/Go/TFCPS_CodeUnitSpecific_Go.py +72 -0
- ScriptCollection/TFCPS/Go/__init__.py +0 -0
- ScriptCollection/TFCPS/Maven/TFCPS_CodeUnitSpecific_Maven.py +42 -0
- ScriptCollection/TFCPS/Maven/__init__.py +0 -0
- ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py +232 -0
- ScriptCollection/TFCPS/NodeJS/__init__.py +0 -0
- ScriptCollection/TFCPS/Python/TFCPS_CodeUnitSpecific_Python.py +239 -0
- ScriptCollection/TFCPS/Python/__init__.py +0 -0
- ScriptCollection/TFCPS/Rust/TFCPS_CodeUnitSpecific_Rust.py +42 -0
- ScriptCollection/TFCPS/Rust/__init__.py +0 -0
- ScriptCollection/TFCPS/TFCPS_CodeUnitSpecific_Base.py +433 -0
- ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnit.py +135 -0
- ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnits.py +301 -0
- ScriptCollection/TFCPS/TFCPS_CreateRelease.py +98 -0
- ScriptCollection/TFCPS/TFCPS_Generic.py +44 -0
- ScriptCollection/TFCPS/TFCPS_MergeToMain.py +128 -0
- ScriptCollection/TFCPS/TFCPS_MergeToStable.py +356 -0
- ScriptCollection/TFCPS/TFCPS_PreBuildCodeunitsScript.py +48 -0
- ScriptCollection/TFCPS/TFCPS_Tools_General.py +1565 -0
- ScriptCollection/TFCPS/__init__.py +0 -0
- ScriptCollection/__init__.py +0 -0
- ScriptCollection/__pycache__/GeneralUtilities.cpython-311.pyc +0 -0
- ScriptCollection/__pycache__/__init__.cpython-311.pyc +0 -0
- scriptcollection-4.2.81.dist-info/METADATA +169 -0
- scriptcollection-4.2.81.dist-info/RECORD +62 -0
- scriptcollection-4.2.81.dist-info/WHEEL +5 -0
- scriptcollection-4.2.81.dist-info/entry_points.txt +67 -0
- scriptcollection-4.2.81.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import re
|
|
3
|
+
from ...GeneralUtilities import GeneralUtilities,Dependency
|
|
4
|
+
from ...SCLog import LogLevel
|
|
5
|
+
from ..TFCPS_CodeUnitSpecific_Base import TFCPS_CodeUnitSpecific_Base,TFCPS_CodeUnitSpecific_Base_CLI
|
|
6
|
+
|
|
7
|
+
class TFCPS_CodeUnitSpecific_Python_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
8
|
+
|
|
9
|
+
def __init__(self,current_file:str,verbosity:LogLevel,targetenvironmenttype:str,use_cache:bool,is_pre_merge:bool):
|
|
10
|
+
super().__init__(current_file, verbosity,targetenvironmenttype,use_cache,is_pre_merge)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@GeneralUtilities.check_arguments
|
|
14
|
+
def build(self) -> None:
|
|
15
|
+
codeunit_folder = self.get_codeunit_folder()
|
|
16
|
+
target_directory = GeneralUtilities.resolve_relative_path("../Artifacts/BuildResult_Wheel", os.path.join(self.get_artifacts_folder()))
|
|
17
|
+
GeneralUtilities.ensure_directory_exists(target_directory)
|
|
18
|
+
self._protected_sc.run_program(GeneralUtilities.get_python_executable(), f"-m build --wheel --outdir {target_directory}", codeunit_folder,print_live_output=self.get_verbosity()==LogLevel.Debug)
|
|
19
|
+
self.generate_bom_for_python_project( )
|
|
20
|
+
self.copy_source_files_to_output_directory()
|
|
21
|
+
|
|
22
|
+
@GeneralUtilities.check_arguments
|
|
23
|
+
def generate_bom_for_python_project(self) -> None:
|
|
24
|
+
codeunit_folder: str=self.get_codeunit_folder()
|
|
25
|
+
codeunitname: str=self.get_codeunit_name()
|
|
26
|
+
repository_folder = os.path.dirname(codeunit_folder)
|
|
27
|
+
codeunitversion = self.tfcps_Tools_General.get_version_of_codeunit(self.get_codeunit_file())
|
|
28
|
+
bom_folder = "Other/Artifacts/BOM"
|
|
29
|
+
bom_folder_full = os.path.join(codeunit_folder, bom_folder)
|
|
30
|
+
GeneralUtilities.ensure_directory_exists(bom_folder_full)
|
|
31
|
+
if not os.path.isfile(os.path.join(codeunit_folder, "requirements.txt")):
|
|
32
|
+
raise ValueError(f"Codeunit {codeunitname} does not have a 'requirements.txt'-file.")
|
|
33
|
+
# TODO check that all values from setup.cfg are contained in requirements.txt
|
|
34
|
+
result = self._protected_sc.run_program("cyclonedx-py", "requirements", codeunit_folder)
|
|
35
|
+
bom_file_relative_json = f"{bom_folder}/{codeunitname}.{codeunitversion}.bom.json"
|
|
36
|
+
bom_file_relative_xml = f"{bom_folder}/{codeunitname}.{codeunitversion}.bom.xml"
|
|
37
|
+
bom_file_json = os.path.join(codeunit_folder, bom_file_relative_json)
|
|
38
|
+
bom_file_xml = os.path.join(codeunit_folder, bom_file_relative_xml)
|
|
39
|
+
|
|
40
|
+
enabled:bool=False
|
|
41
|
+
if enabled:#TODO cyclonedx must be available for all platforms in the global sc-cache-folder
|
|
42
|
+
GeneralUtilities.ensure_file_exists(bom_file_json)
|
|
43
|
+
GeneralUtilities.write_text_to_file(bom_file_json, result[1])
|
|
44
|
+
cyclonedx_exe=self.tfcps_Tools_General.ensure_cyclonedxcli_is_available(not self.use_cache())
|
|
45
|
+
self._protected_sc.run_program(cyclonedx_exe, f"convert --input-file ./{codeunitname}/{bom_file_relative_json} --input-format json --output-file ./{codeunitname}/{bom_file_relative_xml} --output-format xml", repository_folder)
|
|
46
|
+
self._protected_sc.format_xml_file(bom_file_xml)
|
|
47
|
+
GeneralUtilities.ensure_file_does_not_exist(bom_file_json)
|
|
48
|
+
|
|
49
|
+
@GeneralUtilities.check_arguments
|
|
50
|
+
def linting(self) -> None:
|
|
51
|
+
codeunitname: str = self.get_codeunit_name()
|
|
52
|
+
|
|
53
|
+
repository_folder: str = self.get_repository_folder()
|
|
54
|
+
errors_found = False
|
|
55
|
+
self._protected_sc.log.log(f"Check for linting-issues in codeunit {codeunitname}.")
|
|
56
|
+
src_folder = os.path.join(repository_folder, codeunitname, codeunitname)
|
|
57
|
+
tests_folder = src_folder+"Tests"
|
|
58
|
+
# TODO check if there are errors in sarif-file
|
|
59
|
+
for file in GeneralUtilities.get_all_files_of_folder(src_folder)+GeneralUtilities.get_all_files_of_folder(tests_folder):
|
|
60
|
+
relative_file_path_in_repository = os.path.relpath(file, repository_folder)
|
|
61
|
+
if file.endswith(".py") and os.path.getsize(file) > 0 and not self._protected_sc.file_is_git_ignored(relative_file_path_in_repository, repository_folder):
|
|
62
|
+
self._protected_sc.log.log(f"Check for linting-issues in {os.path.relpath(file, os.path.join(repository_folder, codeunitname))}.")
|
|
63
|
+
linting_result = self._protected_sc.python_file_has_errors(file, repository_folder)
|
|
64
|
+
if (linting_result[0]):
|
|
65
|
+
errors_found = True
|
|
66
|
+
for error in linting_result[1]:
|
|
67
|
+
self._protected_sc.log.log(error, LogLevel.Warning)
|
|
68
|
+
if errors_found:
|
|
69
|
+
raise ValueError("Linting-issues occurred.")
|
|
70
|
+
else:
|
|
71
|
+
self._protected_sc.log.log("No linting-issues found.")
|
|
72
|
+
|
|
73
|
+
@GeneralUtilities.check_arguments
|
|
74
|
+
def do_common_tasks(self,current_codeunit_version:str )-> None:
|
|
75
|
+
self.do_common_tasks_base(current_codeunit_version)
|
|
76
|
+
codeunitname =self.get_codeunit_name()
|
|
77
|
+
codeunit_version = self.tfcps_Tools_General.get_version_of_project(self.get_repository_folder())
|
|
78
|
+
self._protected_sc.replace_version_in_ini_file(GeneralUtilities.resolve_relative_path("./setup.cfg", self.get_codeunit_folder()), codeunit_version)
|
|
79
|
+
self._protected_sc.replace_version_in_python_file(GeneralUtilities.resolve_relative_path(f"./{codeunitname}/{codeunitname}Core.py", self.get_codeunit_folder()), codeunit_version)
|
|
80
|
+
|
|
81
|
+
@GeneralUtilities.check_arguments
|
|
82
|
+
def generate_reference(self) -> None:
|
|
83
|
+
self.generate_reference_using_docfx()
|
|
84
|
+
|
|
85
|
+
@GeneralUtilities.check_arguments
|
|
86
|
+
def run_testcases(self) -> None:
|
|
87
|
+
codeunitname: str =self.get_codeunit_name()
|
|
88
|
+
repository_folder: str = self.get_repository_folder()
|
|
89
|
+
codeunit_folder = os.path.join(repository_folder, codeunitname)
|
|
90
|
+
self._protected_sc.run_program("coverage", f"run -m pytest -s ./{codeunitname}Tests", codeunit_folder)
|
|
91
|
+
self._protected_sc.run_program("coverage", "xml", codeunit_folder)
|
|
92
|
+
coveragefolder = os.path.join(repository_folder, codeunitname, "Other/Artifacts/TestCoverage")
|
|
93
|
+
GeneralUtilities.ensure_directory_exists(coveragefolder)
|
|
94
|
+
coveragefile = os.path.join(coveragefolder, "TestCoverage.xml")
|
|
95
|
+
GeneralUtilities.ensure_file_does_not_exist(coveragefile)
|
|
96
|
+
os.rename(os.path.join(repository_folder, codeunitname, "coverage.xml"), coveragefile)
|
|
97
|
+
self.tfcps_Tools_General.merge_packages(coveragefile,codeunitname)
|
|
98
|
+
self.run_testcases_common_post_task(repository_folder, codeunitname, True, self.get_type_environment_type())
|
|
99
|
+
|
|
100
|
+
@GeneralUtilities.check_arguments
|
|
101
|
+
def get_dependencies(self)->dict[str,set[str]]:
|
|
102
|
+
return GeneralUtilities.merge_dependency_lists([
|
|
103
|
+
self.get_dependencies_from_setupcfg(),
|
|
104
|
+
self.get_dependencies_from_requirementstxt(),
|
|
105
|
+
self.get_dependencies_from_otherrequirementstxt()
|
|
106
|
+
])
|
|
107
|
+
|
|
108
|
+
@GeneralUtilities.check_arguments
|
|
109
|
+
def get_dependencies_from_setupcfg(self)->list[Dependency]:
|
|
110
|
+
setupcfg_file=os.path.join(self.get_codeunit_folder(),"setup.cfg")
|
|
111
|
+
lines = GeneralUtilities.read_lines_from_file(setupcfg_file)
|
|
112
|
+
result:list[Dependency]=[]
|
|
113
|
+
is_in_dependency_section=False
|
|
114
|
+
for line in lines:
|
|
115
|
+
if line=="install_requires =":
|
|
116
|
+
is_in_dependency_section=True
|
|
117
|
+
elif line.startswith(" "):
|
|
118
|
+
if is_in_dependency_section:
|
|
119
|
+
match = re.match(r"^\s*([A-Za-z0-9_\-]+)\s*([<>=!~]+)?\s*(.*)?$", line)
|
|
120
|
+
if match:
|
|
121
|
+
dep_name = match.group(1)
|
|
122
|
+
dep_operator = match.group(2) or None#pylint:disable=unused-variable
|
|
123
|
+
dep_version = match.group(3) or None
|
|
124
|
+
dep=Dependency(dep_name,dep_version)
|
|
125
|
+
result.append(dep)
|
|
126
|
+
else:
|
|
127
|
+
raise ValueError(f"Unparsable dependency-definition-line: \"{line}\"")
|
|
128
|
+
else:
|
|
129
|
+
is_in_dependency_section=False
|
|
130
|
+
return result
|
|
131
|
+
|
|
132
|
+
@GeneralUtilities.check_arguments
|
|
133
|
+
def get_dependencies_from_requirementstxt(self)->list[Dependency]:
|
|
134
|
+
return self.get_dependencies_from_requirementsfile(os.path.join(self.get_codeunit_folder(),"requirements.txt"))
|
|
135
|
+
|
|
136
|
+
@GeneralUtilities.check_arguments
|
|
137
|
+
def get_dependencies_from_otherrequirementstxt(self)->list[Dependency]:
|
|
138
|
+
rfile=os.path.join(self.get_codeunit_folder(),"Other","requirements.txt")
|
|
139
|
+
if os.path.isfile(rfile):
|
|
140
|
+
return self.get_dependencies_from_requirementsfile(rfile)
|
|
141
|
+
else:
|
|
142
|
+
return []
|
|
143
|
+
|
|
144
|
+
@GeneralUtilities.check_arguments
|
|
145
|
+
def get_dependencies_from_requirementsfile(self,file:str)->list[Dependency]:
|
|
146
|
+
lines = GeneralUtilities.read_lines_from_file(file)
|
|
147
|
+
result:list[Dependency]=[]
|
|
148
|
+
for line in lines:
|
|
149
|
+
match = re.match(r"^([A-Za-z0-9_\-]+)\s*([<>=!~]+)?\s*(.*)?$", line)
|
|
150
|
+
if match:
|
|
151
|
+
dep_name = match.group(1)
|
|
152
|
+
dep_operator = match.group(2) or None#pylint:disable=unused-variable
|
|
153
|
+
dep_version = match.group(3) or None
|
|
154
|
+
dep=Dependency(dep_name,dep_version)
|
|
155
|
+
result.append(dep)
|
|
156
|
+
|
|
157
|
+
return result
|
|
158
|
+
|
|
159
|
+
@GeneralUtilities.check_arguments
|
|
160
|
+
def get_available_versions(self,dependencyname:str)->list[str]:
|
|
161
|
+
result=self._protected_sc.run_program("pip3",f"index versions {dependencyname}")
|
|
162
|
+
available_versions_line:str=[line for line in GeneralUtilities.string_to_lines(result[1]) if line.startswith("Available versions: ")][0]
|
|
163
|
+
available_versions=[version_str.strip() for version_str in available_versions_line[len("Available versions: "):].split(",")]
|
|
164
|
+
result=[]
|
|
165
|
+
for v in available_versions:
|
|
166
|
+
if re.match(r"^(\d+)\.(\d+)\.(\d+)$", v) is not None:
|
|
167
|
+
result.append(v)
|
|
168
|
+
elif re.match(r"^(\d+)\.(\d+)$", v) is not None:
|
|
169
|
+
result.append(v+".0")
|
|
170
|
+
elif re.match(r"^(\d+)$", v) is not None:
|
|
171
|
+
result.append(v+".0.0")
|
|
172
|
+
return result
|
|
173
|
+
|
|
174
|
+
@GeneralUtilities.check_arguments
|
|
175
|
+
def set_dependency_version(self,name:str,new_version:str)->None:
|
|
176
|
+
self.__set_dependency_version_in_setupcfg(name,new_version)
|
|
177
|
+
self.__set_dependency_version_in_requirementstxt(name,new_version)
|
|
178
|
+
self.__set_dependency_version_in_otherrequirementstxt(name,new_version)
|
|
179
|
+
|
|
180
|
+
@GeneralUtilities.check_arguments
|
|
181
|
+
def __set_dependency_version_in_setupcfg(self,name:str,new_version:str)->None:
|
|
182
|
+
setupcfg_file=os.path.join(self.get_codeunit_folder(),"setup.cfg")
|
|
183
|
+
lines=GeneralUtilities.read_lines_from_file(setupcfg_file)
|
|
184
|
+
new_lines:list[str]=[]
|
|
185
|
+
for line in lines:
|
|
186
|
+
match = re.match("^(\\s*)("+re.escape(name)+")\\s*([<>=!~]+)?\\s*(.*)?$", line)
|
|
187
|
+
if match:
|
|
188
|
+
whitespace = match.group(1)
|
|
189
|
+
dep_name = match.group(2)#pylint:disable=unused-variable
|
|
190
|
+
dep_operator = match.group(3) or None
|
|
191
|
+
dep_version = match.group(4) or None#pylint:disable=unused-variable
|
|
192
|
+
new_line=whitespace+name
|
|
193
|
+
if dep_operator is None:
|
|
194
|
+
dep_operator=">="
|
|
195
|
+
new_line=new_line+dep_operator+new_version
|
|
196
|
+
new_lines.append(new_line)
|
|
197
|
+
else:
|
|
198
|
+
new_lines.append(line)
|
|
199
|
+
GeneralUtilities.write_lines_to_file(setupcfg_file,new_lines)
|
|
200
|
+
|
|
201
|
+
@GeneralUtilities.check_arguments
|
|
202
|
+
def __set_dependency_version_in_requirementstxt(self,name:str,new_version:str)->None:
|
|
203
|
+
self.__set_dependency_version_in_requirements(name,new_version,os.path.join(self.get_codeunit_folder(),"requirements.txt"))
|
|
204
|
+
|
|
205
|
+
@GeneralUtilities.check_arguments
|
|
206
|
+
def __set_dependency_version_in_otherrequirementstxt(self,name:str,new_version:str)->None:
|
|
207
|
+
rfile=os.path.join(self.get_codeunit_folder(),"Other","requirements.txt")
|
|
208
|
+
if os.path.isfile(rfile):
|
|
209
|
+
self.__set_dependency_version_in_requirements(name,new_version,rfile)
|
|
210
|
+
|
|
211
|
+
@GeneralUtilities.check_arguments
|
|
212
|
+
def __set_dependency_version_in_requirements(self,name:str,new_version:str,requirementsfile:str)->None:
|
|
213
|
+
lines=GeneralUtilities.read_lines_from_file(requirementsfile)
|
|
214
|
+
new_lines:list[str]=[]
|
|
215
|
+
for line in lines:
|
|
216
|
+
match = re.match("^("+re.escape(name)+")\\s*([<>=!~]+)?\\s*(.*)?$", line)
|
|
217
|
+
if match:
|
|
218
|
+
dep_name = match.group(1)#pylint:disable=unused-variable
|
|
219
|
+
dep_operator = match.group(2) or None
|
|
220
|
+
dep_version = match.group(3) or None#pylint:disable=unused-variable
|
|
221
|
+
new_line=name
|
|
222
|
+
if dep_operator is None:
|
|
223
|
+
dep_operator=">="
|
|
224
|
+
new_line=new_line+dep_operator+new_version
|
|
225
|
+
new_lines.append(new_line)
|
|
226
|
+
else:
|
|
227
|
+
new_lines.append(line)
|
|
228
|
+
GeneralUtilities.write_lines_to_file(requirementsfile,new_lines)
|
|
229
|
+
|
|
230
|
+
class TFCPS_CodeUnitSpecific_Python_CLI:
|
|
231
|
+
|
|
232
|
+
@staticmethod
|
|
233
|
+
@GeneralUtilities.check_arguments
|
|
234
|
+
def parse(file:str)->TFCPS_CodeUnitSpecific_Python_Functions:
|
|
235
|
+
parser=TFCPS_CodeUnitSpecific_Base_CLI.get_base_parser()
|
|
236
|
+
#add custom parameter if desired
|
|
237
|
+
args=parser.parse_args()
|
|
238
|
+
result:TFCPS_CodeUnitSpecific_Python_Functions=TFCPS_CodeUnitSpecific_Python_Functions(file,LogLevel(int(args.verbosity)),args.targetenvironmenttype,not args.nocache,args.ispremerge)
|
|
239
|
+
return result
|
|
File without changes
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from ...GeneralUtilities import GeneralUtilities
|
|
2
|
+
from ...SCLog import LogLevel
|
|
3
|
+
from ..TFCPS_CodeUnitSpecific_Base import TFCPS_CodeUnitSpecific_Base, TFCPS_CodeUnitSpecific_Base_CLI
|
|
4
|
+
|
|
5
|
+
class TFCPS_CodeUnitSpecific_Rust_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
6
|
+
|
|
7
|
+
def __init__(self, current_file: str, verbosity: LogLevel, targetenvironmenttype: str, use_cache: bool, is_pre_merge: bool):
|
|
8
|
+
super().__init__(current_file, verbosity, targetenvironmenttype, use_cache, is_pre_merge)
|
|
9
|
+
|
|
10
|
+
@GeneralUtilities.check_arguments
|
|
11
|
+
def build(self) -> None:
|
|
12
|
+
pass#TODO
|
|
13
|
+
|
|
14
|
+
@GeneralUtilities.check_arguments
|
|
15
|
+
def linting(self) -> None:
|
|
16
|
+
pass#TODO
|
|
17
|
+
|
|
18
|
+
@GeneralUtilities.check_arguments
|
|
19
|
+
def run_testcases(self) -> None:
|
|
20
|
+
pass#TODO
|
|
21
|
+
|
|
22
|
+
def get_dependencies(self) -> dict[str, set[str]]:
|
|
23
|
+
return dict[str, set[str]]()#TODO
|
|
24
|
+
|
|
25
|
+
@GeneralUtilities.check_arguments
|
|
26
|
+
def get_available_versions(self, dependencyname: str) -> list[str]:
|
|
27
|
+
return []#TODO
|
|
28
|
+
|
|
29
|
+
@GeneralUtilities.check_arguments
|
|
30
|
+
def set_dependency_version(self, name: str, new_version: str) -> None:
|
|
31
|
+
raise ValueError("Operation is not implemented.")
|
|
32
|
+
|
|
33
|
+
class TFCPS_CodeUnitSpecific_Rust_CLI:
|
|
34
|
+
|
|
35
|
+
@staticmethod
|
|
36
|
+
@GeneralUtilities.check_arguments
|
|
37
|
+
def parse(file: str) -> TFCPS_CodeUnitSpecific_Rust_Functions:
|
|
38
|
+
parser = TFCPS_CodeUnitSpecific_Base_CLI.get_base_parser()
|
|
39
|
+
#add custom parameter if desired
|
|
40
|
+
args = parser.parse_args()
|
|
41
|
+
result: TFCPS_CodeUnitSpecific_Rust_Functions = TFCPS_CodeUnitSpecific_Rust_Functions(file, LogLevel(int(args.verbosity)), args.targetenvironmenttype, not args.nocache, args.ispremerge)
|
|
42
|
+
return result
|
|
File without changes
|