flet-cli 1.0.4__tar.gz → 1.1.0.dev0__tar.gz
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.
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/PKG-INFO +3 -3
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/pyproject.toml +3 -3
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/build.py +107 -94
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/build_base.py +808 -750
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/debug.py +3 -8
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/devices.py +1 -6
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/emulators.py +1 -6
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/flutter_base.py +263 -94
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/run.py +97 -34
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/test.py +17 -16
- flet_cli-1.1.0.dev0/src/flet_cli/utils/log_format.py +473 -0
- flet_cli-1.1.0.dev0/src/flet_cli/version.py +1 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli.egg-info/PKG-INFO +3 -3
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli.egg-info/SOURCES.txt +4 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli.egg-info/requires.txt +2 -2
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_icons.py +13 -8
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_linux.py +22 -17
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_platform_settings.py +56 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_splash.py +6 -6
- flet_cli-1.1.0.dev0/tests/test_build_svg.py +167 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_template.py +88 -1
- flet_cli-1.1.0.dev0/tests/test_build_version.py +119 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_create.py +12 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_find_platform_image.py +15 -7
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_flutter.py +2 -0
- flet_cli-1.1.0.dev0/tests/test_log_format.py +829 -0
- flet_cli-1.1.0.dev0/tests/test_run_assets_dir.py +366 -0
- flet_cli-1.0.4/src/flet_cli/version.py +0 -1
- flet_cli-1.0.4/tests/test_run_assets_dir.py +0 -81
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/README.md +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/setup.cfg +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/__init__.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/config.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/hook-flet.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/macos_utils.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/rthooks/pyi_rth_localhost_fletd.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/rthooks.dat +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/utils.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/__pyinstaller/win_utils.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/cli.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/base.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/clean.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/create.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/doctor.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/mcp.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/options.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/pack.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/publish.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/serve.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/commands/test_host.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/android.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/android_sdk.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/app_excludes.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/cli.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/distros.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/flutter.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/hash_stamp.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/ios_sign.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/jdk.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/linux_deps.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/macos_sign.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/merge.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/plist.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/processes.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/project_dependencies.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/pyodide.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/pyproject_toml.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/python_versions.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli/utils/template_cache.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli.egg-info/dependency_links.txt +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli.egg-info/entry_points.txt +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/src/flet_cli.egg-info/top_level.txt +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_app_excludes.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_app_path.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_copy_output.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_ios.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_list_options.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_macos_signing.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_build_windows_arm64.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_clean.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_cli_pass_through_args.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_cli_positionals.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_macos_sign.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_plist.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_project_dependencies.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_python_versions.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_run_desktop_dependency.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_run_script_args.py +0 -0
- {flet_cli-1.0.4 → flet_cli-1.1.0.dev0}/tests/test_run_watcher_unavailable.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flet-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.1.0.dev0
|
|
4
4
|
Summary: Flet CLI
|
|
5
5
|
Author-email: "Appveyor Systems Inc." <hello@flet.dev>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -9,8 +9,8 @@ Project-URL: Repository, https://github.com/flet-dev/flet
|
|
|
9
9
|
Project-URL: Documentation, https://flet.dev/docs
|
|
10
10
|
Requires-Python: >=3.10
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
|
-
Requires-Dist: flet==1.0.
|
|
13
|
-
Requires-Dist: flet-platform-assets==1.0.
|
|
12
|
+
Requires-Dist: flet==1.1.0.dev0
|
|
13
|
+
Requires-Dist: flet-platform-assets==1.1.0.dev0
|
|
14
14
|
Requires-Dist: watchdog>=4.0.0
|
|
15
15
|
Requires-Dist: packaging>=25.0
|
|
16
16
|
Requires-Dist: qrcode>=7.4.2
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "flet-cli"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.1.0.dev0"
|
|
4
4
|
description = "Flet CLI"
|
|
5
5
|
authors = [{ name = "Appveyor Systems Inc.", email = "hello@flet.dev" }]
|
|
6
6
|
license = "Apache-2.0"
|
|
7
7
|
readme = "README.md"
|
|
8
8
|
requires-python = ">=3.10"
|
|
9
9
|
dependencies = [
|
|
10
|
-
"flet==1.0.
|
|
11
|
-
"flet-platform-assets==1.0.
|
|
10
|
+
"flet==1.1.0.dev0",
|
|
11
|
+
"flet-platform-assets==1.1.0.dev0",
|
|
12
12
|
"watchdog >=4.0.0",
|
|
13
13
|
"packaging >=25.0",
|
|
14
14
|
"qrcode >=7.4.2",
|
|
@@ -6,9 +6,6 @@ import tempfile
|
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from typing import Callable, Optional
|
|
8
8
|
|
|
9
|
-
from rich.console import Group
|
|
10
|
-
from rich.live import Live
|
|
11
|
-
|
|
12
9
|
from flet_cli.commands.build_base import BaseBuildCommand, console
|
|
13
10
|
from flet_cli.commands.flutter_base import verbose1_style
|
|
14
11
|
from flet_cli.utils.android import flutter_target_platforms
|
|
@@ -94,11 +91,9 @@ class Command(BaseBuildCommand):
|
|
|
94
91
|
|
|
95
92
|
super().handle(options)
|
|
96
93
|
assert self.target_platform
|
|
97
|
-
self.
|
|
98
|
-
f"[bold blue]Initializing {self.target_platform} build..."
|
|
99
|
-
|
|
100
|
-
)
|
|
101
|
-
with Live(Group(self.status, self.progress), console=console) as self.live:
|
|
94
|
+
with self.live_status(
|
|
95
|
+
f"[bold blue]Initializing {self.target_platform} build..."
|
|
96
|
+
):
|
|
102
97
|
self.initialize_command()
|
|
103
98
|
self.validate_target_platform()
|
|
104
99
|
self.validate_entry_point()
|
|
@@ -119,6 +114,21 @@ class Command(BaseBuildCommand):
|
|
|
119
114
|
if self.target_platform == "macos":
|
|
120
115
|
self.sign_macos_app()
|
|
121
116
|
|
|
117
|
+
unsigned_ipa = self.target_platform == "ipa" and not self.built_ipa()
|
|
118
|
+
if self.no_rich_output:
|
|
119
|
+
# Non-interactive: the exit code is the result, no banner; only
|
|
120
|
+
# the missing .ipa is worth a warning.
|
|
121
|
+
if unsigned_ipa:
|
|
122
|
+
self.warn(
|
|
123
|
+
"No .ipa was produced: Xcode exports one only for a "
|
|
124
|
+
"signed app. Configure a provisioning profile and a "
|
|
125
|
+
"signing certificate to get an uploadable bundle: "
|
|
126
|
+
"https://flet.dev/docs/publish/ios",
|
|
127
|
+
title="iOS signing",
|
|
128
|
+
)
|
|
129
|
+
self.cleanup(0)
|
|
130
|
+
return
|
|
131
|
+
|
|
122
132
|
self.cleanup(
|
|
123
133
|
0,
|
|
124
134
|
message=(
|
|
@@ -139,7 +149,7 @@ class Command(BaseBuildCommand):
|
|
|
139
149
|
"[cyan]provisioning profile[/cyan] and a "
|
|
140
150
|
"[cyan]signing certificate[/cyan] to get an uploadable "
|
|
141
151
|
"bundle: https://flet.dev/docs/publish/ios"
|
|
142
|
-
if
|
|
152
|
+
if unsigned_ipa
|
|
143
153
|
else ""
|
|
144
154
|
)
|
|
145
155
|
),
|
|
@@ -219,33 +229,32 @@ class Command(BaseBuildCommand):
|
|
|
219
229
|
assert self.platforms
|
|
220
230
|
assert self.target_platform
|
|
221
231
|
|
|
222
|
-
self.
|
|
232
|
+
with self.step(
|
|
223
233
|
f"[bold blue]Building [cyan]"
|
|
224
234
|
f"{self.platforms[self.target_platform]['status_text']}[/cyan]..."
|
|
225
|
-
)
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
self._run_flutter_command()
|
|
235
|
+
):
|
|
236
|
+
# Clear the build output directories of artifacts from previous runs.
|
|
237
|
+
# Flutter only ever adds files to them, and copy_build_output harvests
|
|
238
|
+
# them wholesale — so without this, a previous build with different
|
|
239
|
+
# options (e.g. --arch, --split-per-abi, or a renamed product) would
|
|
240
|
+
# leak its artifacts into the user's output directory.
|
|
241
|
+
assert self.flutter_dir
|
|
242
|
+
flutter_dir = self.flutter_dir.resolve()
|
|
243
|
+
for output in self.platforms[self.target_platform]["outputs"]:
|
|
244
|
+
output_dir = Path(
|
|
245
|
+
os.path.dirname(self.resolve_output_path(output))
|
|
246
|
+
).resolve()
|
|
247
|
+
# only delete directories that are strictly inside the generated Flutter
|
|
248
|
+
# project (and never the project directory itself).
|
|
249
|
+
if output_dir != flutter_dir and output_dir.is_relative_to(flutter_dir):
|
|
250
|
+
shutil.rmtree(output_dir, ignore_errors=True)
|
|
251
|
+
|
|
252
|
+
self._run_flutter_command()
|
|
244
253
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
254
|
+
console.log(
|
|
255
|
+
f"Built [cyan]{self.describe_build_output()}"
|
|
256
|
+
f"[/cyan] {self.emojis['checkmark']}",
|
|
257
|
+
)
|
|
249
258
|
|
|
250
259
|
def built_ipa(self) -> bool:
|
|
251
260
|
"""
|
|
@@ -646,58 +655,60 @@ class Command(BaseBuildCommand):
|
|
|
646
655
|
if self.verbose > 0:
|
|
647
656
|
console.log(message, style=verbose1_style)
|
|
648
657
|
|
|
649
|
-
self.
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
self._sign_macos_app_store(app_path, resolved, entitlements, log)
|
|
675
|
-
return
|
|
658
|
+
with self.step(f"[bold blue]Signing [cyan]{app_path.name}[/cyan]..."):
|
|
659
|
+
try:
|
|
660
|
+
# Each lane scopes resolution to the certificate type Apple's
|
|
661
|
+
# services accept for it — which also lets an unset identity
|
|
662
|
+
# auto-discover the only candidate. The plain lane stays
|
|
663
|
+
# unscoped: Apple Development or corporate certificates are
|
|
664
|
+
# legitimate there.
|
|
665
|
+
if distribution == "app-store":
|
|
666
|
+
resolved = resolve_identity(
|
|
667
|
+
identity, types=APP_STORE_CERTIFICATE_TYPES
|
|
668
|
+
)
|
|
669
|
+
elif distribution == "developer-id":
|
|
670
|
+
resolved = resolve_identity(
|
|
671
|
+
identity, types=DEVELOPER_ID_CERTIFICATE_TYPES
|
|
672
|
+
)
|
|
673
|
+
else:
|
|
674
|
+
resolved = resolve_identity(identity)
|
|
675
|
+
if not identity:
|
|
676
|
+
console.log(f"Signing identity: {resolved.name}")
|
|
677
|
+
if distribution == "developer-id" and resolved.is_adhoc:
|
|
678
|
+
self.cleanup(
|
|
679
|
+
1,
|
|
680
|
+
"Developer ID distribution requires a Developer ID "
|
|
681
|
+
'identity; ad-hoc ("-") signed apps cannot be notarized.',
|
|
682
|
+
)
|
|
676
683
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
entitlements=entitlements,
|
|
681
|
-
log=log,
|
|
682
|
-
)
|
|
683
|
-
console.log(
|
|
684
|
-
f"Signed [cyan]{app_path.name}[/cyan] ({signed_count} binaries, "
|
|
685
|
-
f"identity: {resolved.description}) {self.emojis['checkmark']}"
|
|
686
|
-
)
|
|
684
|
+
if distribution == "app-store":
|
|
685
|
+
self._sign_macos_app_store(app_path, resolved, entitlements, log)
|
|
686
|
+
return
|
|
687
687
|
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
688
|
+
signed_count = sign_app(
|
|
689
|
+
app_path,
|
|
690
|
+
resolved,
|
|
691
|
+
entitlements=entitlements,
|
|
692
|
+
log=log,
|
|
693
693
|
)
|
|
694
|
-
notarize_and_staple(app_path, credentials, log=log)
|
|
695
694
|
console.log(
|
|
696
|
-
f"
|
|
697
|
-
f"{self.emojis['checkmark']}"
|
|
695
|
+
f"Signed [cyan]{app_path.name}[/cyan] ({signed_count} binaries, "
|
|
696
|
+
f"identity: {resolved.description}) {self.emojis['checkmark']}"
|
|
698
697
|
)
|
|
699
|
-
|
|
700
|
-
|
|
698
|
+
|
|
699
|
+
if distribution == "developer-id":
|
|
700
|
+
credentials = self._macos_notary_credentials()
|
|
701
|
+
with self.step(
|
|
702
|
+
f"[bold blue]Notarizing [cyan]{app_path.name}[/cyan] "
|
|
703
|
+
"(this can take a few minutes)...",
|
|
704
|
+
):
|
|
705
|
+
notarize_and_staple(app_path, credentials, log=log)
|
|
706
|
+
console.log(
|
|
707
|
+
f"Notarized and stapled [cyan]{app_path.name}[/cyan] "
|
|
708
|
+
f"{self.emojis['checkmark']}"
|
|
709
|
+
)
|
|
710
|
+
except MacOSSigningError as e:
|
|
711
|
+
self.cleanup(1, str(e))
|
|
701
712
|
|
|
702
713
|
def _sign_macos_app_store(
|
|
703
714
|
self,
|
|
@@ -797,12 +808,14 @@ class Command(BaseBuildCommand):
|
|
|
797
808
|
"or `[tool.flet.macos.info]` in pyproject.toml.",
|
|
798
809
|
)
|
|
799
810
|
if "ITSAppUsesNonExemptEncryption" not in info:
|
|
800
|
-
|
|
801
|
-
"
|
|
811
|
+
self.warn(
|
|
812
|
+
"ITSAppUsesNonExemptEncryption is not set in "
|
|
802
813
|
"Info.plist — App Store Connect will ask the export-compliance "
|
|
803
814
|
"question manually for every build. Set it with --info-plist "
|
|
804
815
|
"ITSAppUsesNonExemptEncryption=False if your app only uses "
|
|
805
|
-
"standard encryption.
|
|
816
|
+
"standard encryption.",
|
|
817
|
+
title="App Store",
|
|
818
|
+
style="yellow",
|
|
806
819
|
)
|
|
807
820
|
|
|
808
821
|
profile_app_id = profile_application_identifier(profile_path)
|
|
@@ -845,17 +858,17 @@ class Command(BaseBuildCommand):
|
|
|
845
858
|
f"{self.emojis['checkmark']}"
|
|
846
859
|
)
|
|
847
860
|
|
|
848
|
-
self.
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
861
|
+
with self.step(f"[bold blue]Packaging [cyan]{app_path.stem}.pkg[/cyan]..."):
|
|
862
|
+
pkg = build_pkg(
|
|
863
|
+
app_path,
|
|
864
|
+
installer,
|
|
865
|
+
self.out_dir / f"{app_path.stem}.pkg",
|
|
866
|
+
log=log,
|
|
867
|
+
)
|
|
868
|
+
console.log(
|
|
869
|
+
f"Packaged [cyan]{pkg.name}[/cyan] for App Store Connect "
|
|
870
|
+
f"(installer identity: {installer.name}) {self.emojis['checkmark']}"
|
|
871
|
+
)
|
|
859
872
|
|
|
860
873
|
def _macos_notary_credentials(self) -> NotaryCredentials:
|
|
861
874
|
"""
|