@regulaforensics/face-sdk 6.3.3-beta → 6.3.4-beta

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.
Files changed (68) hide show
  1. package/examples/capacitor/package.json +1 -1
  2. package/examples/cordova/package.json +1 -1
  3. package/examples/ionic/package.json +1 -1
  4. package/examples/react-native/package.json +1 -1
  5. package/package.json +1 -1
  6. package/plugin.xml +1 -1
  7. package/ios-ci/.gitlab-ci.yml +0 -41
  8. package/ios-ci/.sample-env +0 -22
  9. package/ios-ci/README.md +0 -97
  10. package/ios-ci/RegulaDanger/Package.swift +0 -34
  11. package/ios-ci/RegulaDanger/Sources/RegulaDanger/RegulaDanger.swift +0 -44
  12. package/ios-ci/RegulaDanger/Tests/LinuxMain.swift +0 -7
  13. package/ios-ci/RegulaDanger/Tests/RegulaDangerTests/RegulaDangerTests.swift +0 -15
  14. package/ios-ci/RegulaDanger/Tests/RegulaDangerTests/XCTestManifests.swift +0 -9
  15. package/ios-ci/install.sh +0 -9
  16. package/ios-ci/ios_ci/__init__.py +0 -8
  17. package/ios-ci/ios_ci/cli.py +0 -408
  18. package/ios-ci/ios_ci/common/__init__.py +0 -0
  19. package/ios-ci/ios_ci/common/build_index.py +0 -70
  20. package/ios-ci/ios_ci/common/clean_cocoapod.sh +0 -13
  21. package/ios-ci/ios_ci/common/dependency.py +0 -466
  22. package/ios-ci/ios_ci/common/ftp.py +0 -314
  23. package/ios-ci/ios_ci/common/searchpod.sh +0 -6
  24. package/ios-ci/ios_ci/common/wait_for_cocopod.sh +0 -21
  25. package/ios-ci/ios_ci/inject.py +0 -145
  26. package/ios-ci/ios_ci/podspec/__init__.py +0 -0
  27. package/ios-ci/ios_ci/podspec/podspec.py +0 -88
  28. package/ios-ci/ios_ci/podspec/templates/BTDevice.podspec +0 -17
  29. package/ios-ci/ios_ci/podspec/templates/Core.podspec +0 -17
  30. package/ios-ci/ios_ci/podspec/templates/DocumentReader.podspec +0 -19
  31. package/ios-ci/ios_ci/podspec/templates/FaceCore.podspec +0 -17
  32. package/ios-ci/ios_ci/podspec/templates/FaceSDK.podspec +0 -18
  33. package/ios-ci/ios_ci/podspec/templates/IRS.podspec +0 -17
  34. package/ios-ci/ios_ci/podspec/templates/RegulaCommon.podspec +0 -17
  35. package/ios-ci/ios_ci/resolve_podfile_common.py +0 -76
  36. package/ios-ci/ios_ci/spm/AppleRootCA-G3.cer +0 -0
  37. package/ios-ci/ios_ci/spm/AppleWWDRCAG3.cer +0 -0
  38. package/ios-ci/ios_ci/spm/SwiftPackageGenerator+Common.sh +0 -48
  39. package/ios-ci/ios_ci/spm/SwiftPackageGenerator.sh +0 -33
  40. package/ios-ci/ios_ci/spm/XcodeSPMCollection.json +0 -29
  41. package/ios-ci/ios_ci/spm/__init__.py +0 -0
  42. package/ios-ci/ios_ci/spm/askpass.py +0 -19
  43. package/ios-ci/ios_ci/spm/spm.py +0 -227
  44. package/ios-ci/ios_ci/upload_build.py +0 -158
  45. package/ios-ci/ios_ci/version.py +0 -14
  46. package/ios-ci/poetry.lock +0 -342
  47. package/ios-ci/pyproject.toml +0 -26
  48. package/ios-ci/scripts.py +0 -9
  49. package/ios-ci/tests/__init__.py +0 -0
  50. package/ios-ci/tests/podspec/fixtures/BTDevice.podspec +0 -17
  51. package/ios-ci/tests/podspec/fixtures/BTDeviceBeta.podspec +0 -17
  52. package/ios-ci/tests/podspec/fixtures/DocumentReaderBeta_RegulaCommon_Beta.podspec +0 -19
  53. package/ios-ci/tests/podspec/fixtures/DocumentReaderBeta_RegulaCommon_Release.podspec +0 -19
  54. package/ios-ci/tests/podspec/fixtures/DocumentReaderFullRFID.podspec +0 -17
  55. package/ios-ci/tests/podspec/fixtures/DocumentReaderFullRFIDBeta.podspec +0 -17
  56. package/ios-ci/tests/podspec/fixtures/DocumentReader_RegulaCommon_Beta.podspec +0 -19
  57. package/ios-ci/tests/podspec/fixtures/DocumentReader_RegulaCommon_Release.podspec +0 -19
  58. package/ios-ci/tests/podspec/fixtures/FaceSDK.podspec +0 -18
  59. package/ios-ci/tests/podspec/fixtures/FaceSDKBeta.podspec +0 -18
  60. package/ios-ci/tests/podspec/fixtures/IRS.podspec +0 -17
  61. package/ios-ci/tests/podspec/fixtures/IRSBeta.podspec +0 -17
  62. package/ios-ci/tests/podspec/fixtures/RegulaCommon.podspec +0 -17
  63. package/ios-ci/tests/podspec/fixtures/RegulaCommonBeta.podspec +0 -17
  64. package/ios-ci/tests/podspec/test_podspec.py +0 -188
  65. package/ios-ci/tests/test_build_index.py +0 -117
  66. package/ios-ci/tests/test_dependency.py +0 -139
  67. package/ios-ci/tests/test_ios_ci.py +0 -5
  68. package/www/capacitor/internal/webpack.config.js +0 -11
@@ -1,314 +0,0 @@
1
- import os
2
- import datetime
3
- from typing import Tuple
4
- from typing import Optional
5
-
6
- from urllib.parse import urlparse
7
- from getpass import getpass
8
- from ftplib import FTP
9
- from dateutil import parser
10
-
11
- from ios_ci.common.dependency import DependencyBuildType
12
- from ios_ci.common.dependency import Dependency
13
- from ios_ci.common.build_index import BuildIndex
14
-
15
-
16
- def connect(ftp_host: str):
17
- is_public_ftp = ftp_host == "pods.regulaforensics.com"
18
-
19
- if is_public_ftp:
20
- username_env_key = "PUBLIC_UPLOAD_FTP_USERNAME"
21
- password_env_key = "PUBLIC_UPLOAD_FTP_PASSWORD"
22
- else:
23
- username_env_key = "PRIVATE_UPLOAD_FTP_USERNAME"
24
- password_env_key = "PRIVATE_UPLOAD_FTP_PASSWORD"
25
-
26
- ftp_username = os.environ.get(username_env_key)
27
- if ftp_username is None:
28
- ftp_username = input(f"{username_env_key}: ")
29
- ftp_password = os.environ.get(password_env_key)
30
- if ftp_password is None:
31
- ftp_password = getpass(f"{password_env_key}: ")
32
-
33
- print(
34
- f"[log] establishing conection with ftp_host: {ftp_host} using ftp_username: {ftp_username}"
35
- )
36
-
37
- session = FTP(host=ftp_host, user=ftp_username, passwd=ftp_password)
38
- return session
39
-
40
-
41
- def upload_build(upload_url: str, build_version: str, the_archive_filepath: str):
42
- uplaod_url_components = urlparse(upload_url)
43
- ftp_host = _fix_host_name(uplaod_url_components.hostname)
44
-
45
- session = connect(ftp_host=ftp_host)
46
-
47
- ftp_path_components = uplaod_url_components.path.split("/")
48
- ftp_path_components.remove("")
49
- ftp_zip_file_name = ftp_path_components.pop()
50
- for component in ftp_path_components:
51
- if component == build_version and component in session.nlst():
52
- print(f"[log] version already exits at {upload_url}")
53
- try:
54
- if component in session.nlst():
55
- print(f"[log] directory: {component} exists. opening.")
56
- session.cwd(component)
57
- else:
58
- print(f"[log] directory: {component} does not exits. creating.")
59
- session.mkd(component)
60
- session.cwd(component)
61
- except Exception as e:
62
- print(f"[error] ftp error: {e}")
63
- raise
64
-
65
- the_archive_file = open(the_archive_filepath, "rb")
66
- session.storbinary(f"STOR {ftp_zip_file_name}", the_archive_file)
67
-
68
- session.quit()
69
- the_archive_file.close()
70
-
71
-
72
- def _local_build_index_filepath() -> Tuple[str, str]:
73
- filename = "index.toml"
74
- this_script_path = os.path.dirname(os.path.realpath(__file__))
75
- local_filepath = f"{this_script_path}/{filename}"
76
- return (local_filepath, filename)
77
-
78
-
79
- def _guard_only_local_ftp_host(project_url: str):
80
- components = urlparse(project_url)
81
- ftp_host = components.hostname
82
- if ftp_host != "ftp" and ftp_host != "ftp.regula.local":
83
- print(
84
- f"[error] Build index is only supported for private ftp usage. Double check the project_url: {project_url}"
85
- )
86
- raise ValueError(
87
- "Build index is only supported for private ftp usage. Double check the project_url.",
88
- project_url,
89
- )
90
-
91
-
92
- def _fix_host_name(host_name: str) -> str:
93
- fix_name = os.environ.get("LOCAL_FTP_RENAME")
94
- if fix_name:
95
- return fix_name
96
- return host_name
97
-
98
-
99
- def fetch_build_index(project_url: str) -> Optional[BuildIndex]:
100
- _guard_only_local_ftp_host(project_url)
101
-
102
- components = urlparse(project_url)
103
- ftp_host = _fix_host_name(components.hostname)
104
- session = connect(ftp_host=ftp_host)
105
-
106
- try:
107
- session.cwd(components.path)
108
- except Exception as e:
109
- print(f"[error] ftp error: {e}")
110
- raise
111
-
112
- filepath, filename = _local_build_index_filepath()
113
- if filename not in session.nlst():
114
- return None
115
-
116
- with open(filepath, "wb") as file:
117
- session.retrbinary(f"RETR {filename}", file.write)
118
-
119
- import toml
120
-
121
- index_dict = toml.load(filepath)
122
- index = BuildIndex.from_json(index_dict)
123
- return index
124
-
125
- def upload_collection_json(project_url: str):
126
- components = urlparse(project_url)
127
- ftp_host = _fix_host_name(components.hostname)
128
-
129
- session = connect(ftp_host=ftp_host)
130
-
131
- try:
132
- session.cwd(components.path)
133
- except Exception as e:
134
- print(f"[error] ftp error: {e}")
135
- raise
136
-
137
- filepath = "/Users/administratorregula/workspace/iOS_SPM_Upload_Pipeline/iOS_Common/ios-ci/swift-package-collection-generator/PodsCollection-signed.json"
138
- filename = "PodsCollection-signed.json"
139
-
140
- the_json_file = open(filepath, "rb")
141
- session.storbinary(f"STOR {filename}", the_json_file)
142
-
143
- session.quit()
144
- the_json_file.close()
145
-
146
- def upload_build_index(index: BuildIndex, project_url: str):
147
- _guard_only_local_ftp_host(project_url)
148
-
149
- components = urlparse(project_url)
150
- ftp_host = _fix_host_name(components.hostname)
151
- session = connect(ftp_host=ftp_host)
152
- try:
153
- session.cwd(components.path)
154
- except Exception as e:
155
- print(f"[error] ftp error: {e}")
156
- raise
157
-
158
- import toml
159
-
160
- filepath, filename = _local_build_index_filepath()
161
-
162
- prefix = (
163
- "# This is an autogenerated file created by ios-ci.\n"
164
- "# The file is used for indexing build versions by branch names.\n"
165
- "# Please do not modify it manually.\n\n"
166
- )
167
- toml_str = toml.dumps(index.to_json())
168
- toml_str = prefix + toml_str
169
-
170
- with open(filepath, "wt") as file:
171
- file.write(toml_str)
172
-
173
- the_index_file = open(filepath, "rb")
174
- session.storbinary(f"STOR {filename}", the_index_file)
175
-
176
- session.quit()
177
- the_index_file.close()
178
-
179
-
180
- def _ftp_url_for_build_type(build_type: DependencyBuildType, is_temp_specs: bool = False) -> str:
181
- scheme_type_switch = {
182
- DependencyBuildType.TEMP: "https" if is_temp_specs else "http",
183
- DependencyBuildType.BETA: "https",
184
- DependencyBuildType.NIGHTLY: "https",
185
- DependencyBuildType.STAGE: "https",
186
- DependencyBuildType.RELEASE: "https",
187
- }
188
- scheme = scheme_type_switch.get(build_type)
189
- host_type_switch = {
190
- DependencyBuildType.TEMP: "ftp.regula.local",
191
- DependencyBuildType.BETA: "pods.regulaforensics.com",
192
- DependencyBuildType.NIGHTLY: "pods.regulaforensics.com/Nightly",
193
- DependencyBuildType.STAGE: "pods.regulaforensics.com/Stage",
194
- DependencyBuildType.RELEASE: "pods.regulaforensics.com",
195
- }
196
- host_name = host_type_switch.get(build_type)
197
- host_name = _fix_host_name(host_name)
198
- return f"{scheme}://{host_name}"
199
-
200
-
201
- def make_ftp_build_archive_url(dependency: Dependency, version: str, is_temp_specs: bool = False) -> str:
202
- build_type = dependency.build_type
203
- resource_path = dependency.ftp_project_path
204
- archive_name = dependency.ftp_archive_name(version=version)
205
- resource_path = f"{resource_path}/{version}/{archive_name}"
206
- base = _ftp_url_for_build_type(build_type=build_type, is_temp_specs=is_temp_specs)
207
- return f"{base}/{resource_path}.zip"
208
-
209
-
210
- def make_ftp_project_url(dependency: Dependency) -> str:
211
- build_type = dependency.build_type
212
- resource_path = dependency.ftp_project_path
213
- base = _ftp_url_for_build_type(build_type=build_type)
214
- return f"{base}/{resource_path}"
215
-
216
-
217
- def upload_latest_version(version: str, project_url: str):
218
- components = urlparse(project_url)
219
- ftp_host = _fix_host_name(components.hostname)
220
- session = connect(ftp_host=ftp_host)
221
- ftp_path_components = components.path.split("/")
222
- ftp_path_components.remove("")
223
- for component in ftp_path_components:
224
- try:
225
- if component in session.nlst():
226
- print(f"[log] directory: {component} exists. opening.")
227
- session.cwd(component)
228
- else:
229
- print(f"[log] directory: {component} does not exits. creating.")
230
- session.mkd(component)
231
- session.cwd(component)
232
- except Exception as e:
233
- print(f"[error] ftp error: {e}")
234
- raise
235
-
236
- filename = "latest_version.txt"
237
- this_script_path = os.path.dirname(os.path.realpath(__file__))
238
- filepath = f"{this_script_path}/{filename}"
239
-
240
- with open(filepath, "wt") as file:
241
- file.write(version)
242
-
243
- the_version_file = open(filepath, "rb")
244
- session.storbinary(f"STOR {filename}", the_version_file)
245
-
246
- session.quit()
247
- the_version_file.close()
248
-
249
-
250
- def clean_old_data(url: str):
251
- url_components = urlparse(url)
252
- ftp_host = _fix_host_name(url_components.hostname)
253
- ftp_path_components = url_components.path.split("/")
254
- ftp_path_components.remove("")
255
- session = connect(ftp_host=ftp_host)
256
- session.cwd(ftp_path_components[0])
257
- lines = session.nlst()
258
- session.dir("", lines.append)
259
-
260
- for line in lines:
261
- tokens = line.split(maxsplit=9)
262
- if tokens.__len__() > 7:
263
- time_str = tokens[5] + " " + tokens[6] + " " + tokens[7]
264
- time = parser.parse(time_str)
265
- if time < datetime.datetime.now() - datetime.timedelta(days=60):
266
- delete_dir(f"{url}/{tokens[8]}")
267
-
268
-
269
- def delete_dir(dir_url: str):
270
- upload_url_components = urlparse(dir_url)
271
- ftp_host = _fix_host_name(upload_url_components.hostname)
272
- session = connect(ftp_host=ftp_host)
273
-
274
- ftp_path_components = upload_url_components.path.split("/")
275
- ftp_path_components.remove("")
276
- target_dir = ftp_path_components.pop()
277
- for component in ftp_path_components:
278
- try:
279
- if component in session.nlst():
280
- print(f"[log] directory: {component} exists. opening.")
281
- session.cwd(component)
282
- else:
283
- ValueError(f"[log] delete_dir error: parent directory '{component}' does not exits.")
284
- except Exception as e:
285
- print(f"[error] ftp error: {e}")
286
- raise
287
-
288
- ftp_rm_tree(session, target_dir)
289
- session.quit()
290
-
291
-
292
- def ftp_rm_tree(ftp, path):
293
- wd = ftp.pwd()
294
-
295
- try:
296
- names = ftp.nlst(path)
297
- except:
298
- return
299
-
300
- for name in names:
301
- if os.path.split(name)[1] in ('.', '..'): continue
302
- try:
303
- ftp.cwd(name) # if we can cwd to it, it's a folder
304
- ftp.cwd(wd) # don't try a nuke a folder we're in
305
- ftp_rm_tree(ftp, name)
306
- except:
307
- print(f"[ftp_rm_tree] deleting file {name}")
308
- ftp.delete(name)
309
-
310
- try:
311
- print(f"[ftp_rm_tree] deleting directory {path}")
312
- ftp.rmd(path)
313
- except Exception as e:
314
- print(f"[error] ftp_rm_tree: Could not remove {0}: {1}".format(path, e))
@@ -1,6 +0,0 @@
1
- #!/bin/bash -l
2
-
3
- PODNAME=$1
4
- RESULT="unknown"
5
- RESULT=$(pod spec which ${PODNAME} | egrep -oh "${PODNAME}/\w+.\w+.\w+" | awk -F'/' '{print $2}')
6
- echo $RESULT
@@ -1,21 +0,0 @@
1
- #!/bin/bash -l
2
-
3
- PODNAME=$1
4
- VERSION=$2
5
- isCocoapodUpdated=0
6
-
7
- echo "PODNAME: ${PODNAME}"
8
- echo "VERSION: ${VERSION}"
9
-
10
- isCocoapodUpdated=0
11
- while [ ${isCocoapodUpdated} -ne 1 ]
12
- do
13
- pod repo update
14
- RESULT=$(pod search ${PODNAME} --no-pager --simple)
15
- echo "COCOAPOD VERSION: ${RESULT}"
16
- if [[ "${RESULT}" == *"- ${VERSION}"* ]]; then
17
- isCocoapodUpdated=1
18
- else
19
- sleep 180
20
- fi
21
- done
@@ -1,145 +0,0 @@
1
- import os
2
- import subprocess
3
- import shutil
4
-
5
- from ios_ci.common.dependency import DependencyBuildType
6
- from ios_ci.common.dependency import VersionResolver
7
- from ios_ci.common.dependency import make_dependency
8
- from ios_ci.common.dependency import inject_destination_path
9
- from ios_ci.common import ftp
10
-
11
-
12
- def inject_dependency(
13
- name: str,
14
- version_selector: str,
15
- dependency_type: str,
16
- branch="default",
17
- destination: str = None,
18
- ):
19
- branch = branch.replace("/", "_")
20
-
21
- resolver = VersionResolver()
22
- build_type = DependencyBuildType(dependency_type)
23
- dependency = make_dependency(name, build_type)
24
- resolved_version = resolver.resolve_dependency_version(
25
- dependency=dependency, version_selector=version_selector, branch=branch
26
- )
27
-
28
- destination_dependency = dependency
29
- source_dependency = dependency
30
- if resolved_version.build_type is not None:
31
- if (
32
- dependency.build_type is DependencyBuildType.BETA
33
- and resolved_version.build_type is not DependencyBuildType.BETA
34
- ):
35
- print(
36
- f"[warning] {dependency.name}: dependency resolved by cocoapods has a different type: {resolved_version.build_type}. Overriding dependency.type: {dependency.build_type} to the cocoapods type: {resolved_version.build_type}"
37
- )
38
- destination_dependency = make_dependency(name, resolved_version.build_type)
39
-
40
- pod_name = dependency.pod_name
41
- print(f"[log] {pod_name}: {version_selector}, {dependency.build_type}, {branch}")
42
-
43
- version = resolved_version.version
44
- if version is None:
45
- print(
46
- f"[error] unable to fetch version for {pod_name}, {version_selector}, {dependency.build_type}, {branch}"
47
- )
48
- exit(1)
49
-
50
- if destination is None:
51
- destination = inject_destination_path(destination_dependency)
52
-
53
- print(f"[log] {pod_name}: destinaton: {destination}")
54
- source_url = ftp.make_ftp_build_archive_url(source_dependency, version)
55
- print(f"[log] {pod_name}: source_url: {source_url}")
56
-
57
- print(f"[log] {pod_name}: check if folder exists {destination}")
58
- if not os.path.exists(destination):
59
- print(f"[warning] {pod_name}: destinaton does not exist. Creating a folder.")
60
- try:
61
- os.makedirs(destination)
62
- except OSError as error:
63
- print(error)
64
- print(
65
- f"[error] {pod_name}: Error: {error}. failed to create a folder at {destination}"
66
- )
67
-
68
- framework_name = dependency.framework_name
69
- framework_filepath = f"{destination}/{framework_name}"
70
- print(f"[log] {pod_name}: framework_filepath: {framework_filepath}")
71
- if os.path.exists(framework_filepath):
72
- print(f"[log] {pod_name}: framework already exists. overriding.")
73
- shutil.rmtree(framework_filepath)
74
-
75
- download_attempts: int = os.environ.get("IOS_CI_DEPENDENCY_DOWNLOAD_ATTEMPTS", 3)
76
-
77
- injected = False
78
- for attempt in range(download_attempts):
79
- print(
80
- f"[log] {pod_name}: Attempt {attempt + 1} of {download_attempts} to download and unzip dependency from url: {source_url}"
81
- )
82
- success = _attempt_download_and_unzip(
83
- source_url=source_url,
84
- destination=destination,
85
- expected_framework_name=framework_name,
86
- log_prefix=pod_name,
87
- )
88
- if success:
89
- injected = True
90
- break
91
-
92
- if not injected:
93
- print(
94
- f"[error] {pod_name}: failed all attempts to download and unzip dependency from url: {source_url}"
95
- )
96
- exit(1)
97
-
98
- print(f"[log] injected dependency successfully")
99
-
100
-
101
- def _attempt_download_and_unzip(
102
- source_url: str, destination: str, expected_framework_name: str, log_prefix: str
103
- ) -> bool:
104
- zip_filepath = f"{destination}/_temp_dependency_archive.zip"
105
- print(f"[log] {log_prefix}: zip_filepath: {zip_filepath}")
106
- if os.path.exists(zip_filepath):
107
- print(
108
- f"[log] {log_prefix}: removing previous download at zip_filepath: {zip_filepath}"
109
- )
110
- os.remove(zip_filepath)
111
-
112
- print(f"[log] {log_prefix}: downloading fresh dependency from url: {source_url}")
113
- subprocess.run(
114
- ["curl", "-s", source_url, "--output", zip_filepath], check=True, text=True
115
- )
116
- if not os.path.exists(zip_filepath):
117
- print(f"[error] {log_prefix}: download failed. zip does NOT exist.")
118
- return False
119
- print(f"[log] {log_prefix}: download is successful")
120
-
121
- print(
122
- f"[log] {log_prefix}: unzip zipfile: {zip_filepath} to location: {destination}"
123
- )
124
- try:
125
- subprocess.run(
126
- ["unzip", "-q", "-ao", zip_filepath, "-d", destination],
127
- check=True,
128
- text=True,
129
- )
130
- except subprocess.CalledProcessError as error:
131
- print(error)
132
- return False
133
-
134
- framework_filepath = f"{destination}/{expected_framework_name}"
135
- if not os.path.exists(framework_filepath):
136
- print(f"[error] {log_prefix}: unzip failure. Framework does not exist.")
137
- return False
138
-
139
- print(f"[log] {log_prefix}: unzip success.")
140
-
141
- if os.path.exists(zip_filepath):
142
- print(f"[log] {log_prefix}: cleanup downloaded archive: {zip_filepath}")
143
- os.remove(zip_filepath)
144
-
145
- return True
File without changes
@@ -1,88 +0,0 @@
1
- from pathlib import Path
2
- import json
3
- import os
4
- import datetime
5
-
6
- from ios_ci.common.dependency import Dependency
7
- from ios_ci.common.dependency import DependencyBuildType
8
- from ios_ci.common.dependency import CoreDependency
9
- from ios_ci.common.dependency import make_dependency
10
-
11
- from ios_ci.common import ftp
12
-
13
- _this_filepath = Path(os.path.dirname(os.path.abspath(__file__)))
14
-
15
-
16
- def make_podspec(
17
- name: str,
18
- version: str,
19
- type: str,
20
- dependency_name: str = None,
21
- dependency_version: str = None,
22
- dependency_type: str = None,
23
- output_location_directory: str = None,
24
- ) -> str:
25
- build_type = DependencyBuildType(type)
26
- package = make_dependency(name=name, build_type=build_type)
27
-
28
- dependency_build_type = None
29
- dependency = None
30
-
31
- if dependency_type is not None:
32
- dependency_build_type = DependencyBuildType(dependency_type)
33
- if dependency_name is not None and dependency_build_type is not None:
34
- dependency = make_dependency(
35
- name=dependency_name, build_type=dependency_build_type
36
- )
37
-
38
- output_filepath = _make_podspec(
39
- package=package,
40
- package_version=version,
41
- dependency=dependency,
42
- dependency_version=dependency_version,
43
- output_location_directory=output_location_directory,
44
- )
45
- return output_filepath
46
-
47
-
48
- def _make_podspec(
49
- package: Dependency,
50
- package_version: str,
51
- dependency: Dependency = None,
52
- dependency_version: str = None,
53
- output_location_directory: str = None,
54
- ) -> str:
55
- if output_location_directory is None:
56
- output_location_directory = str(_this_filepath)
57
-
58
- token_value_map = {
59
- "<VERSION>": package_version,
60
- "<POD_NAME>": package.pod_name_temp,
61
- "<YEAR>": str(datetime.datetime.now().year),
62
- "<FTP_SOURCE_URL>": ftp.make_ftp_build_archive_url(
63
- dependency=package, version=package_version, is_temp_specs=True
64
- ),
65
- }
66
-
67
- if dependency is not None:
68
- token_value_map.update(
69
- {
70
- "<DEPENDENCY_NAME>": dependency.pod_name_temp,
71
- "<DEPENDENCY_VERSION>": dependency_version,
72
- }
73
- )
74
- print(f"[log] token_value_map: {json.dumps(token_value_map, indent=4)}")
75
-
76
- is_core = isinstance(package, CoreDependency)
77
- package_name = "Core" if is_core else package.name
78
- package_name = "FaceCore" if package.name[0:8] == "FaceCore" else package_name
79
- template_filepath = _this_filepath / "templates" / f"{package_name}.podspec"
80
- output_filepath = f"{output_location_directory}/{package.pod_name_temp}.podspec"
81
- with open(template_filepath, "rt") as fin, open(output_filepath, "wt") as fout:
82
- for line in fin:
83
- for token, value in token_value_map.items():
84
- line = line.replace(token, value)
85
- fout.write(line)
86
-
87
- print(f"[log] {package.pod_name_temp}.podspec created at: {output_filepath}")
88
- return output_filepath
@@ -1,17 +0,0 @@
1
- Pod::Spec.new do |s|
2
- s.name = '<POD_NAME>'
3
- s.version = '<VERSION>'
4
- s.summary = 'Framework for reading and authenticity verification of identity documents using the Regula mobile document authenticator'
5
- s.license = {
6
- type: 'commercial',
7
- text: <<-LICENSE
8
- © <YEAR> RegulaForensics. All rights reserved.
9
- LICENSE
10
- }
11
- s.homepage = 'https://mobile.regulaforensics.com'
12
- s.author = { 'RegulaForensics' => 'support@regulaforensics.com' }
13
- s.source = { http: '<FTP_SOURCE_URL>' }
14
- s.platform = :ios
15
- s.ios.deployment_target = '11.0.0'
16
- s.ios.vendored_frameworks = 'BTDevice.xcframework'
17
- end
@@ -1,17 +0,0 @@
1
- Pod::Spec.new do |s|
2
- s.name = '<POD_NAME>'
3
- s.version = '<VERSION>'
4
- s.summary = 'Document Reader Core framework for fast and accurate data extraction from identity documents'
5
- s.license = {
6
- type: 'commercial',
7
- text: <<-LICENSE
8
- © <YEAR> RegulaForensics. All rights reserved.
9
- LICENSE
10
- }
11
- s.homepage = 'https://mobile.regulaforensics.com'
12
- s.author = { 'RegulaForensics' => 'support@regulaforensics.com' }
13
- s.source = { http: '<FTP_SOURCE_URL>' }
14
- s.platform = :ios
15
- s.ios.deployment_target = '11.0.0'
16
- s.ios.vendored_frameworks = 'DocumentReaderCore.xcframework'
17
- end
@@ -1,19 +0,0 @@
1
- Pod::Spec.new do |s|
2
- s.name = '<POD_NAME>'
3
- s.version = '<VERSION>'
4
- s.summary = 'Document Reader API framework for fast and accurate data extraction from identity documents'
5
- s.license = {
6
- type: 'commercial',
7
- text: <<-LICENSE
8
- © <YEAR> RegulaForensics. All rights reserved.
9
- LICENSE
10
- }
11
- s.homepage = 'https://mobile.regulaforensics.com'
12
- s.author = { 'RegulaForensics' => 'support@regulaforensics.com' }
13
- s.source = { http: '<FTP_SOURCE_URL>' }
14
- s.platform = :ios
15
- s.weak_frameworks = 'CoreNFC'
16
- s.ios.deployment_target = '11.0.0'
17
- s.ios.vendored_frameworks = 'DocumentReader.xcframework'
18
- s.dependency '<DEPENDENCY_NAME>', '<DEPENDENCY_VERSION>'
19
- end
@@ -1,17 +0,0 @@
1
- Pod::Spec.new do |s|
2
- s.name = '<POD_NAME>'
3
- s.version = '<VERSION>'
4
- s.summary = 'Face Core framework for face matching, face recognition, and liveness detection'
5
- s.license = {
6
- type: 'commercial',
7
- text: <<-LICENSE
8
- © <YEAR> RegulaForensics. All rights reserved.
9
- LICENSE
10
- }
11
- s.homepage = 'https://mobile.regulaforensics.com'
12
- s.author = { 'RegulaForensics' => 'support@regulaforensics.com' }
13
- s.source = { http: '<FTP_SOURCE_URL>' }
14
- s.platform = :ios
15
- s.ios.deployment_target = '11.0.0'
16
- s.ios.vendored_frameworks = 'Liveness.xcframework'
17
- end
@@ -1,18 +0,0 @@
1
- Pod::Spec.new do |s|
2
- s.name = '<POD_NAME>'
3
- s.version = '<VERSION>'
4
- s.summary = 'Framework for face matching, face recognition, and liveness detection'
5
- s.license = {
6
- type: 'commercial',
7
- text: <<-LICENSE
8
- © <YEAR> RegulaForensics. All rights reserved.
9
- LICENSE
10
- }
11
- s.homepage = 'https://mobile.regulaforensics.com'
12
- s.author = { 'RegulaForensics' => 'support@regulaforensics.com' }
13
- s.source = { http: '<FTP_SOURCE_URL>' }
14
- s.platform = :ios
15
- s.ios.deployment_target = '11.0.0'
16
- s.ios.vendored_frameworks = 'FaceSDK.xcframework'
17
- s.dependency '<DEPENDENCY_NAME>', '<DEPENDENCY_VERSION>'
18
- end