@_nazmiforreal/flutter-ota 0.1.12 → 0.1.14
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.
- package/README.md +1 -1
- package/bin/flutter-ota-linux-x64 +0 -0
- package/dart-src/packages/cli-tools/.dart_tool/package_config.json +46 -76
- package/dart-src/packages/cli-tools/.dart_tool/package_graph.json +140 -166
- package/dart-src/packages/cli-tools/README.md +1 -1
- package/dart-src/packages/cli-tools/lib/flutter_ota_kit_cli.dart +30 -17
- package/dart-src/packages/cli-tools/lib/src/backend.dart +30 -31
- package/dart-src/packages/cli-tools/lib/src/cli_base.dart +3 -1
- package/dart-src/packages/cli-tools/lib/src/commands/build.dart +44 -43
- package/dart-src/packages/cli-tools/lib/src/commands/bundle.dart +265 -239
- package/dart-src/packages/cli-tools/lib/src/commands/channel.dart +75 -66
- package/dart-src/packages/cli-tools/lib/src/commands/config_command.dart +39 -35
- package/dart-src/packages/cli-tools/lib/src/commands/console.dart +30 -27
- package/dart-src/packages/cli-tools/lib/src/commands/deploy.dart +88 -72
- package/dart-src/packages/cli-tools/lib/src/commands/doctor.dart +66 -29
- package/dart-src/packages/cli-tools/lib/src/commands/fingerprint.dart +10 -6
- package/dart-src/packages/cli-tools/lib/src/commands/init.dart +290 -181
- package/dart-src/packages/cli-tools/lib/src/commands/keys.dart +24 -23
- package/dart-src/packages/cli-tools/lib/src/commands/migrate.dart +111 -97
- package/dart-src/packages/cli-tools/lib/src/commands/pocketbase.dart +237 -0
- package/dart-src/packages/cli-tools/lib/src/commands/rollback.dart +43 -34
- package/dart-src/packages/cli-tools/lib/src/commands/storage.dart +57 -53
- package/dart-src/packages/cli-tools/lib/src/config.dart +227 -93
- package/dart-src/packages/cli-tools/lib/src/operations.dart +9 -8
- package/dart-src/packages/cli-tools/lib/src/pack.dart +26 -25
- package/dart-src/packages/cli-tools/lib/src/pocketbase/data_bootstrap.dart +39 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/hooks/bundles.pb.js +56 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/installer.dart +189 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/process_manager.dart +123 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/schema_installer.dart +237 -0
- package/dart-src/packages/cli-tools/lib/src/runner.dart +36 -15
- package/dart-src/packages/cli-tools/lib/src/sign.dart +13 -5
- package/dart-src/packages/cli-tools/lib/src/ui/ui.dart +10 -13
- package/dart-src/packages/cli-tools/lib/src/util.dart +3 -1
- package/dart-src/packages/cli-tools/pubspec.lock +69 -116
- package/dart-src/packages/cli-tools/pubspec.yaml +25 -7
- package/dart-src/packages/cli-tools/test/backends_test.dart +62 -32
- package/dart-src/packages/cli-tools/test/build_pack_test.dart +4 -4
- package/dart-src/packages/cli-tools/test/cli_test.dart +89 -42
- package/dart-src/packages/cli-tools/test/mocks/mock_aws_s3_client.dart +8 -13
- package/dart-src/packages/cli-tools/test/mocks/mock_d1_client.dart +23 -18
- package/dart-src/packages/cli-tools/test/mocks/mock_pocketbase_client.dart +197 -0
- package/dart-src/packages/cli-tools/test/mocks/mock_postgres_client.dart +70 -46
- package/dart-src/packages/cli-tools/test/pocketbase_installer_test.dart +72 -0
- package/dart-src/packages/cli-tools/test/pocketbase_schema_test.dart +107 -0
- package/dart-src/packages/cli-tools/test/pocketbase_smoke_test.dart +59 -0
- package/dart-src/packages/core/CHANGELOG.md +9 -0
- package/dart-src/packages/core/README.md +2 -2
- package/dart-src/packages/core/example/lib/main.dart +69 -0
- package/dart-src/packages/core/lib/flutter_ota_kit_core.dart +1 -1
- package/dart-src/packages/core/lib/src/app_update_info.dart +17 -15
- package/dart-src/packages/core/lib/src/bundle.dart +102 -94
- package/dart-src/packages/core/lib/src/bundle_artifacts.dart +1 -2
- package/dart-src/packages/core/lib/src/bundle_patch_artifact.dart +15 -16
- package/dart-src/packages/core/lib/src/changed_asset.dart +24 -22
- package/dart-src/packages/core/lib/src/get_bundles_args.dart +13 -13
- package/dart-src/packages/core/lib/src/metadata.dart +9 -7
- package/dart-src/packages/core/lib/src/patch_info.dart +8 -7
- package/dart-src/packages/core/lib/src/platform.dart +4 -3
- package/dart-src/packages/core/lib/src/rollout.dart +14 -11
- package/dart-src/packages/core/lib/src/semver_range.dart +49 -39
- package/dart-src/packages/core/lib/src/semver_version.dart +8 -7
- package/dart-src/packages/core/lib/src/status.dart +4 -3
- package/dart-src/packages/core/lib/src/update_bundle_params.dart +7 -7
- package/dart-src/packages/core/lib/src/uuid.dart +1 -2
- package/dart-src/packages/core/pubspec.yaml +6 -7
- package/dart-src/packages/core/test/rollout_test.dart +15 -8
- package/dart-src/packages/core/test/semver_test.dart +5 -2
- package/dart-src/packages/core/test/types_test.dart +26 -24
- package/dart-src/packages/core/test/uuid_test.dart +3 -1
- package/dart-src/packages/core/tool/dbg.dart +1 -0
- package/dart-src/plugins/aws/CHANGELOG.md +15 -0
- package/dart-src/plugins/aws/example/lib/main.dart +60 -0
- package/dart-src/plugins/aws/lib/flutter_ota_kit_aws.dart +5 -1
- package/dart-src/plugins/aws/lib/src/aws_cloudfront_client.dart +11 -16
- package/dart-src/plugins/aws/lib/src/aws_cloudfront_signer.dart +7 -2
- package/dart-src/plugins/aws/lib/src/aws_database.dart +14 -18
- package/dart-src/plugins/aws/lib/src/aws_s3_client.dart +23 -18
- package/dart-src/plugins/aws/lib/src/aws_ssm_client.dart +5 -4
- package/dart-src/plugins/aws/lib/src/aws_storage.dart +2 -3
- package/dart-src/plugins/aws/lib/src/aws_storage_profile.dart +10 -16
- package/dart-src/plugins/aws/lib/src/with_cloudfront_signed_url.dart +6 -9
- package/dart-src/plugins/aws/pubspec.yaml +15 -10
- package/dart-src/plugins/aws/test/aws_database_test.dart +51 -57
- package/dart-src/plugins/aws/test/mock_aws_s3_client.dart +8 -13
- package/dart-src/plugins/cloudflare/CHANGELOG.md +15 -0
- package/dart-src/plugins/cloudflare/example/lib/main.dart +62 -0
- package/dart-src/plugins/cloudflare/lib/flutter_ota_kit_cloudflare.dart +4 -2
- package/dart-src/plugins/cloudflare/lib/src/cloudflare_worker_database.dart +3 -3
- package/dart-src/plugins/cloudflare/lib/src/d1_build_where.dart +3 -2
- package/dart-src/plugins/cloudflare/lib/src/d1_bundle_mapper.dart +24 -27
- package/dart-src/plugins/cloudflare/lib/src/d1_database_plugin.dart +22 -30
- package/dart-src/plugins/cloudflare/lib/src/r2_config.dart +1 -1
- package/dart-src/plugins/cloudflare/lib/src/r2_s3_client.dart +21 -29
- package/dart-src/plugins/cloudflare/lib/src/r2_storage.dart +7 -7
- package/dart-src/plugins/cloudflare/lib/src/r2_storage_profile.dart +7 -15
- package/dart-src/plugins/cloudflare/pubspec.yaml +14 -9
- package/dart-src/plugins/cloudflare/test/cloudflare_worker_database_test.dart +46 -42
- package/dart-src/plugins/cloudflare/test/d1_database_test.dart +100 -90
- package/dart-src/plugins/cloudflare/test/mock_d1_client.dart +23 -18
- package/dart-src/plugins/cloudflare/test/mock_r2_client.dart +8 -13
- package/dart-src/plugins/cloudflare/test/r2_storage_test.dart +1 -4
- package/dart-src/plugins/plugin-core/CHANGELOG.md +15 -1
- package/dart-src/plugins/plugin-core/example/lib/main.dart +61 -0
- package/dart-src/plugins/plugin-core/lib/flutter_ota_kit_plugin_core.dart +3 -7
- package/dart-src/plugins/plugin-core/lib/src/asset_storage_layout.dart +5 -5
- package/dart-src/plugins/plugin-core/lib/src/bundle_helpers.dart +23 -0
- package/dart-src/plugins/plugin-core/lib/src/bundle_storage_layout.dart +16 -10
- package/dart-src/plugins/plugin-core/lib/src/bundle_unit_of_work.dart +31 -26
- package/dart-src/plugins/plugin-core/lib/src/calculate_pagination.dart +5 -1
- package/dart-src/plugins/plugin-core/lib/src/content_addressed_assets.dart +1 -1
- package/dart-src/plugins/plugin-core/lib/src/create_blob_database_plugin.dart +78 -71
- package/dart-src/plugins/plugin-core/lib/src/create_database_plugin.dart +56 -35
- package/dart-src/plugins/plugin-core/lib/src/create_storage_plugin.dart +10 -13
- package/dart-src/plugins/plugin-core/lib/src/paginate_bundles.dart +30 -17
- package/dart-src/plugins/plugin-core/lib/src/parse_storage_uri.dart +3 -1
- package/dart-src/plugins/plugin-core/lib/src/query_bundles.dart +5 -3
- package/dart-src/plugins/plugin-core/lib/src/request_update_bundle_state.dart +2 -4
- package/dart-src/plugins/plugin-core/lib/src/storage_helpers.dart +18 -0
- package/dart-src/plugins/plugin-core/lib/src/types.dart +7 -6
- package/dart-src/plugins/plugin-core/pubspec.yaml +12 -9
- package/dart-src/plugins/plugin-core/test/asset_storage_layout_test.dart +13 -9
- package/dart-src/plugins/plugin-core/test/bundle_unit_of_work_test.dart +28 -15
- package/dart-src/plugins/plugin-core/test/create_blob_database_plugin_test.dart +254 -122
- package/dart-src/plugins/plugin-core/test/create_database_plugin_test.dart +36 -32
- package/dart-src/plugins/plugin-core/test/create_storage_plugin_test.dart +18 -15
- package/dart-src/plugins/plugin-core/test/generate_min_bundle_id_test.dart +8 -3
- package/dart-src/plugins/plugin-core/test/get_update_info_test.dart +682 -693
- package/dart-src/plugins/plugin-core/test/helpers_test.dart +45 -21
- package/dart-src/plugins/plugin-core/test/query_bundles_test.dart +76 -13
- package/dart-src/plugins/plugin-core/test/uuidv7_test.dart +20 -9
- package/dart-src/plugins/pocketbase/CHANGELOG.md +8 -0
- package/dart-src/plugins/pocketbase/LICENSE +21 -0
- package/dart-src/plugins/pocketbase/README.md +54 -0
- package/dart-src/plugins/pocketbase/example/lib/main.dart +62 -0
- package/dart-src/plugins/pocketbase/lib/flutter_ota_kit_pocketbase.dart +28 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_bundle_mapper.dart +121 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_client.dart +349 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_config.dart +61 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_database.dart +278 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_storage.dart +255 -0
- package/dart-src/plugins/pocketbase/pubspec.yaml +26 -0
- package/dart-src/plugins/pocketbase/test/pb_uri_test.dart +12 -0
- package/dart-src/plugins/postgres/CHANGELOG.md +16 -0
- package/dart-src/plugins/postgres/example/lib/main.dart +67 -0
- package/dart-src/plugins/postgres/lib/flutter_ota_kit_postgres.dart +3 -6
- package/dart-src/plugins/postgres/lib/src/postgres_bundle_mapper.dart +32 -52
- package/dart-src/plugins/postgres/lib/src/postgres_config.dart +3 -1
- package/dart-src/plugins/postgres/lib/src/postgres_database.dart +28 -38
- package/dart-src/plugins/postgres/lib/src/postgres_get_update_info.dart +16 -14
- package/dart-src/plugins/postgres/lib/src/postgres_storage.dart +26 -14
- package/dart-src/plugins/postgres/lib/src/postgres_types.dart +27 -28
- package/dart-src/plugins/postgres/pubspec.yaml +14 -9
- package/dart-src/plugins/postgres/test/mock_postgres_client.dart +62 -39
- package/dart-src/plugins/postgres/test/postgres_bundle_mapper_test.dart +3 -4
- package/dart-src/plugins/postgres/test/postgres_database_test.dart +102 -73
- package/dart-src/plugins/postgres/test/postgres_storage_runtime_test.dart +60 -0
- package/dart-src/plugins/supabase/CHANGELOG.md +20 -0
- package/dart-src/plugins/supabase/README.md +2 -2
- package/dart-src/plugins/supabase/example/lib/main.dart +63 -0
- package/dart-src/plugins/supabase/lib/flutter_ota_kit_supabase.dart +2 -0
- package/dart-src/plugins/supabase/lib/src/error_message.dart +11 -0
- package/dart-src/plugins/supabase/lib/src/supabase_bundle_mapper.dart +34 -58
- package/dart-src/plugins/supabase/lib/src/supabase_client_adapter.dart +3 -13
- package/dart-src/plugins/supabase/lib/src/supabase_client_http.dart +34 -52
- package/dart-src/plugins/supabase/lib/src/supabase_database.dart +38 -30
- package/dart-src/plugins/supabase/lib/src/supabase_edge_function_storage.dart +21 -29
- package/dart-src/plugins/supabase/lib/src/supabase_signed_url_batcher.dart +7 -19
- package/dart-src/plugins/supabase/lib/src/supabase_storage.dart +18 -29
- package/dart-src/plugins/supabase/lib/src/types.dart +26 -26
- package/dart-src/plugins/supabase/pubspec.yaml +14 -9
- package/dart-src/plugins/supabase/test/mock_supabase_client.dart +57 -57
- package/dart-src/plugins/supabase/test/supabase_bundle_mapper_test.dart +30 -27
- package/dart-src/plugins/supabase/test/supabase_database_test.dart +26 -35
- package/dart-src/plugins/supabase/test/supabase_storage_test.dart +27 -34
- package/package.json +3 -3
- package/scripts/vendor.sh +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import 'package:flutter_ota_kit_aws/flutter_ota_kit_aws.dart';
|
|
2
2
|
import 'package:flutter_ota_kit_cloudflare/flutter_ota_kit_cloudflare.dart';
|
|
3
3
|
import 'package:flutter_ota_kit_plugin_core/flutter_ota_kit_plugin_core.dart';
|
|
4
|
+
import 'package:flutter_ota_kit_pocketbase/flutter_ota_kit_pocketbase.dart';
|
|
4
5
|
import 'package:flutter_ota_kit_postgres/flutter_ota_kit_postgres.dart';
|
|
5
6
|
import 'package:flutter_ota_kit_supabase/flutter_ota_kit_supabase.dart';
|
|
6
7
|
|
|
@@ -8,11 +9,7 @@ import 'config.dart';
|
|
|
8
9
|
|
|
9
10
|
/// Backend handle wiring the database + node storage profiles used by the CLI.
|
|
10
11
|
class Backend {
|
|
11
|
-
const Backend({
|
|
12
|
-
required this.db,
|
|
13
|
-
required this.storage,
|
|
14
|
-
this.basePath,
|
|
15
|
-
});
|
|
12
|
+
const Backend({required this.db, required this.storage, this.basePath});
|
|
16
13
|
|
|
17
14
|
final DatabasePlugin db;
|
|
18
15
|
final NodeStorageProfile storage;
|
|
@@ -33,10 +30,10 @@ class Backend {
|
|
|
33
30
|
|
|
34
31
|
/// Construct a [Backend] for the configured provider.
|
|
35
32
|
///
|
|
36
|
-
/// Supports `supabase`, `postgres`, `cloudflare`, and `
|
|
37
|
-
/// precedence is: explicit factory/flag > environment variable >
|
|
38
|
-
/// (see the `resolve*Config` helpers in `config.dart`). Test seams
|
|
39
|
-
/// inject mock clients (e.g. `postgresClientFactory`).
|
|
33
|
+
/// Supports `supabase`, `postgres`, `cloudflare`, `aws`, and `pocketbase`.
|
|
34
|
+
/// Credential precedence is: explicit factory/flag > environment variable >
|
|
35
|
+
/// JSON config (see the `resolve*Config` helpers in `config.dart`). Test seams
|
|
36
|
+
/// let callers inject mock clients (e.g. `postgresClientFactory`).
|
|
40
37
|
Backend resolveBackend(
|
|
41
38
|
FlutterPatcherConfig config, {
|
|
42
39
|
SupabaseClientFactory? supabaseClientFactory,
|
|
@@ -45,8 +42,9 @@ Backend resolveBackend(
|
|
|
45
42
|
PostgresClientFactory? postgresClientFactory,
|
|
46
43
|
AwsS3ClientLike Function(S3DatabaseConfig config)? awsS3ClientFactory,
|
|
47
44
|
AwsCloudFrontClientLike Function(S3DatabaseConfig config)?
|
|
48
|
-
|
|
45
|
+
awsCloudFrontClientFactory,
|
|
49
46
|
AwsS3ClientLike Function(AwsS3StorageConfig config)? awsStorageClientFactory,
|
|
47
|
+
PocketBaseClientFactory? pocketbaseClientFactory,
|
|
50
48
|
}) {
|
|
51
49
|
switch (config.provider) {
|
|
52
50
|
case 'supabase':
|
|
@@ -64,11 +62,7 @@ Backend resolveBackend(
|
|
|
64
62
|
if (node == null) {
|
|
65
63
|
throw StateError('Supabase storage plugin exposes no node profile.');
|
|
66
64
|
}
|
|
67
|
-
return Backend(
|
|
68
|
-
db: db,
|
|
69
|
-
storage: node,
|
|
70
|
-
basePath: storageConfig.basePath,
|
|
71
|
-
);
|
|
65
|
+
return Backend(db: db, storage: node, basePath: storageConfig.basePath);
|
|
72
66
|
|
|
73
67
|
case 'postgres':
|
|
74
68
|
final dbConfig = resolvePostgresDatabaseConfig(
|
|
@@ -85,11 +79,7 @@ Backend resolveBackend(
|
|
|
85
79
|
if (node == null) {
|
|
86
80
|
throw StateError('Postgres storage plugin exposes no node profile.');
|
|
87
81
|
}
|
|
88
|
-
return Backend(
|
|
89
|
-
db: db,
|
|
90
|
-
storage: node,
|
|
91
|
-
basePath: storageConfig.basePath,
|
|
92
|
-
);
|
|
82
|
+
return Backend(db: db, storage: node, basePath: storageConfig.basePath);
|
|
93
83
|
|
|
94
84
|
case 'cloudflare':
|
|
95
85
|
final dbConfig = resolveCloudflareDatabaseConfig(
|
|
@@ -106,11 +96,7 @@ Backend resolveBackend(
|
|
|
106
96
|
if (node == null) {
|
|
107
97
|
throw StateError('R2 storage plugin exposes no node profile.');
|
|
108
98
|
}
|
|
109
|
-
return Backend(
|
|
110
|
-
db: db,
|
|
111
|
-
storage: node,
|
|
112
|
-
basePath: storageConfig.basePath,
|
|
113
|
-
);
|
|
99
|
+
return Backend(db: db, storage: node, basePath: storageConfig.basePath);
|
|
114
100
|
|
|
115
101
|
case 'aws':
|
|
116
102
|
final dbConfig = resolveAwsDatabaseConfig(
|
|
@@ -128,16 +114,29 @@ Backend resolveBackend(
|
|
|
128
114
|
if (node == null) {
|
|
129
115
|
throw StateError('S3 storage plugin exposes no node profile.');
|
|
130
116
|
}
|
|
131
|
-
return Backend(
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
117
|
+
return Backend(db: db, storage: node, basePath: storageConfig.basePath);
|
|
118
|
+
|
|
119
|
+
case 'pocketbase':
|
|
120
|
+
final dbConfig = resolvePocketBaseDatabaseConfig(
|
|
121
|
+
config,
|
|
122
|
+
clientFactory: pocketbaseClientFactory,
|
|
135
123
|
);
|
|
124
|
+
final storageConfig = resolvePocketBaseStorageConfig(
|
|
125
|
+
config,
|
|
126
|
+
clientFactory: pocketbaseClientFactory,
|
|
127
|
+
);
|
|
128
|
+
final db = pocketbaseDatabase(dbConfig)();
|
|
129
|
+
final storage = pocketbaseStorage(storageConfig);
|
|
130
|
+
final node = storage.profiles.node;
|
|
131
|
+
if (node == null) {
|
|
132
|
+
throw StateError('PocketBase storage plugin exposes no node profile.');
|
|
133
|
+
}
|
|
134
|
+
return Backend(db: db, storage: node, basePath: storageConfig.basePath);
|
|
136
135
|
|
|
137
136
|
default:
|
|
138
137
|
throw UnsupportedError(
|
|
139
138
|
'Provider "${config.provider}" is not supported. '
|
|
140
|
-
'Supported: supabase, postgres, cloudflare, aws.',
|
|
139
|
+
'Supported: supabase, postgres, cloudflare, aws, pocketbase.',
|
|
141
140
|
);
|
|
142
141
|
}
|
|
143
|
-
}
|
|
142
|
+
}
|
|
@@ -53,13 +53,15 @@ FlutterPatcherConfig? effectiveConfig(
|
|
|
53
53
|
) {
|
|
54
54
|
final backend = argResults['backend'] as String?;
|
|
55
55
|
if (backend == null) return cfg;
|
|
56
|
-
final base =
|
|
56
|
+
final base =
|
|
57
|
+
cfg ??
|
|
57
58
|
FlutterPatcherConfig(
|
|
58
59
|
provider: backend,
|
|
59
60
|
supabase: const SupabaseConfigJson(),
|
|
60
61
|
postgres: const PostgresConfigJson(),
|
|
61
62
|
cloudflare: const CloudflareConfigJson(),
|
|
62
63
|
aws: const AwsConfigJson(),
|
|
64
|
+
pocketbase: const PocketBaseConfigJson(),
|
|
63
65
|
);
|
|
64
66
|
return base.copyWith(provider: backend);
|
|
65
67
|
}
|
|
@@ -30,7 +30,8 @@ class BuildCommand extends FlutterPatcherCommand {
|
|
|
30
30
|
)
|
|
31
31
|
..addOption(
|
|
32
32
|
'abi',
|
|
33
|
-
help:
|
|
33
|
+
help:
|
|
34
|
+
'Restrict the patch to a single ABI (e.g. arm64-v8a). '
|
|
34
35
|
'Default: all ABIs found in the APK are included.',
|
|
35
36
|
)
|
|
36
37
|
..addOption(
|
|
@@ -50,48 +51,48 @@ class BuildCommand extends FlutterPatcherCommand {
|
|
|
50
51
|
|
|
51
52
|
@override
|
|
52
53
|
Future<int> run() => runGuarded(() async {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
54
|
+
final results = argResults!;
|
|
55
|
+
final apk = results['apk'] as String?;
|
|
56
|
+
if (apk == null || apk.isEmpty) {
|
|
57
|
+
throw PackException('missing required --apk <path>', 64);
|
|
58
|
+
}
|
|
59
|
+
final version = results['version'] as String?;
|
|
60
|
+
if (version == null || version.isEmpty) {
|
|
61
|
+
throw PackException('missing required --version <string>', 64);
|
|
62
|
+
}
|
|
63
|
+
final targetVersionCodeRaw = results['target-version-code'] as String?;
|
|
64
|
+
if (targetVersionCodeRaw == null || targetVersionCodeRaw.isEmpty) {
|
|
65
|
+
throw PackException('missing required --target-version-code <int>', 64);
|
|
66
|
+
}
|
|
67
|
+
final targetVersionCode = int.tryParse(targetVersionCodeRaw);
|
|
68
|
+
if (targetVersionCode == null) {
|
|
69
|
+
throw PackException('--target-version-code must be an integer', 64);
|
|
70
|
+
}
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
72
|
+
banner('build');
|
|
73
|
+
final bar = ProgressBar(1, 'pack');
|
|
74
|
+
final result = await packPatch(
|
|
75
|
+
apkPath: apk,
|
|
76
|
+
version: version,
|
|
77
|
+
targetVersionCode: targetVersionCode,
|
|
78
|
+
abi: results['abi'] as String?,
|
|
79
|
+
requestedAssets: results['assets'] as List<String>,
|
|
80
|
+
out: results['out'] as String,
|
|
81
|
+
onProgress: (done, total, label) {
|
|
82
|
+
bar.total = total;
|
|
83
|
+
bar.update(done, label);
|
|
84
|
+
},
|
|
85
|
+
);
|
|
85
86
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
87
|
+
box('patch.zip', [
|
|
88
|
+
kv('version', result.version),
|
|
89
|
+
kv('target code', result.targetVersionCode.toString()),
|
|
90
|
+
kv('abis', cyan(result.abis.join(' · '))),
|
|
91
|
+
kv('bundle md5', gray(result.md5)),
|
|
92
|
+
kv('overlay assets', result.assetCount.toString()),
|
|
93
|
+
kv('payload', result.payloadPath),
|
|
94
|
+
kv('manifest', result.manifestPath),
|
|
95
|
+
]);
|
|
96
|
+
step('Build complete — ready to deploy.');
|
|
97
|
+
});
|
|
97
98
|
}
|