@_nazmiforreal/flutter-ota 0.1.0 → 0.1.1
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/bin/flutter-patcher.js +37 -39
- package/dart-src/packages/cli-tools/.dart_tool/package_config.json +496 -0
- package/dart-src/packages/cli-tools/.dart_tool/package_graph.json +743 -0
- package/dart-src/packages/cli-tools/.gitkeep +0 -0
- package/dart-src/packages/cli-tools/bin/flutter_patcher.dart +9 -0
- package/dart-src/packages/cli-tools/lib/flutter_patcher_cli.dart +73 -0
- package/dart-src/packages/cli-tools/lib/src/backend.dart +162 -0
- package/dart-src/packages/cli-tools/lib/src/cli_base.dart +56 -0
- package/dart-src/packages/cli-tools/lib/src/commands/build.dart +99 -0
- package/dart-src/packages/cli-tools/lib/src/commands/bundle.dart +151 -0
- package/dart-src/packages/cli-tools/lib/src/commands/channel.dart +140 -0
- package/dart-src/packages/cli-tools/lib/src/commands/config_command.dart +113 -0
- package/dart-src/packages/cli-tools/lib/src/commands/console.dart +55 -0
- package/dart-src/packages/cli-tools/lib/src/commands/deploy.dart +95 -0
- package/dart-src/packages/cli-tools/lib/src/commands/doctor.dart +48 -0
- package/dart-src/packages/cli-tools/lib/src/commands/fingerprint.dart +29 -0
- package/dart-src/packages/cli-tools/lib/src/commands/init.dart +82 -0
- package/dart-src/packages/cli-tools/lib/src/commands/keys.dart +55 -0
- package/dart-src/packages/cli-tools/lib/src/commands/migrate.dart +132 -0
- package/dart-src/packages/cli-tools/lib/src/commands/rollback.dart +41 -0
- package/dart-src/packages/cli-tools/lib/src/config.dart +715 -0
- package/dart-src/packages/cli-tools/lib/src/operations.dart +206 -0
- package/dart-src/packages/cli-tools/lib/src/pack.dart +417 -0
- package/dart-src/packages/cli-tools/lib/src/sign.dart +60 -0
- package/dart-src/packages/cli-tools/lib/src/util.dart +86 -0
- package/dart-src/packages/cli-tools/migrations/cloudflare/0001_hot-updater_init.sql +16 -0
- package/dart-src/packages/cli-tools/migrations/cloudflare/0002_hot-updater_0.13.0.sql +8 -0
- package/dart-src/packages/cli-tools/migrations/cloudflare/0003_hot-updater_0.18.0.sql +38 -0
- package/dart-src/packages/cli-tools/migrations/cloudflare/0004_hot-updater_0.29.0.sql +11 -0
- package/dart-src/packages/cli-tools/migrations/cloudflare/0005_hot-updater_0.31.0.sql +24 -0
- package/dart-src/packages/cli-tools/migrations/cloudflare/bundles.sql +42 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20250103114225_init.sql +228 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20250314000000_hot-updater_0.13.0.sql +134 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20250516000000_hot-updater_0.18.0.sql +194 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20251014000000_hot-updater_0.21.0.sql +184 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20260401000000_hot-updater_0.29.0.sql +503 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20260414000000_hot-updater_0.30.0.sql +50 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20260422000000_hot-updater_0.31.0.sql +20 -0
- package/dart-src/packages/cli-tools/migrations/supabase/20260520014100_hot-updater_rls.sql +48 -0
- package/dart-src/packages/cli-tools/pubspec.lock +638 -0
- package/dart-src/packages/cli-tools/pubspec.yaml +37 -0
- package/dart-src/packages/core/lib/flutter_patcher_core.dart +29 -0
- package/dart-src/packages/core/lib/src/app_update_info.dart +111 -0
- package/dart-src/packages/core/lib/src/bundle.dart +191 -0
- package/dart-src/packages/core/lib/src/bundle_artifacts.dart +39 -0
- package/dart-src/packages/core/lib/src/bundle_patch_artifact.dart +47 -0
- package/dart-src/packages/core/lib/src/changed_asset.dart +77 -0
- package/dart-src/packages/core/lib/src/get_bundles_args.dart +78 -0
- package/dart-src/packages/core/lib/src/metadata.dart +31 -0
- package/dart-src/packages/core/lib/src/patch_info.dart +284 -0
- package/dart-src/packages/core/lib/src/platform.dart +15 -0
- package/dart-src/packages/core/lib/src/rollout.dart +209 -0
- package/dart-src/packages/core/lib/src/semver.dart +70 -0
- package/dart-src/packages/core/lib/src/semver_range.dart +358 -0
- package/dart-src/packages/core/lib/src/semver_version.dart +94 -0
- package/dart-src/packages/core/lib/src/status.dart +24 -0
- package/dart-src/packages/core/lib/src/strategy.dart +10 -0
- package/dart-src/packages/core/lib/src/update_bundle_params.dart +30 -0
- package/dart-src/packages/core/lib/src/uuid.dart +45 -0
- package/dart-src/packages/core/pubspec.lock +381 -0
- package/dart-src/packages/core/pubspec.yaml +9 -0
- package/dart-src/packages/core/tool/dbg.dart +6 -0
- package/dart-src/plugins/aws/.gitkeep +0 -0
- package/dart-src/plugins/aws/lib/flutter_patcher_aws.dart +12 -0
- package/dart-src/plugins/aws/lib/src/aws_cloudfront_client.dart +207 -0
- package/dart-src/plugins/aws/lib/src/aws_cloudfront_signer.dart +130 -0
- package/dart-src/plugins/aws/lib/src/aws_config.dart +59 -0
- package/dart-src/plugins/aws/lib/src/aws_database.dart +198 -0
- package/dart-src/plugins/aws/lib/src/aws_lambda_edge_storage.dart +72 -0
- package/dart-src/plugins/aws/lib/src/aws_s3_client.dart +312 -0
- package/dart-src/plugins/aws/lib/src/aws_ssm_client.dart +125 -0
- package/dart-src/plugins/aws/lib/src/aws_storage.dart +20 -0
- package/dart-src/plugins/aws/lib/src/aws_storage_profile.dart +123 -0
- package/dart-src/plugins/aws/lib/src/with_cloudfront_signed_url.dart +136 -0
- package/dart-src/plugins/aws/pubspec.lock +435 -0
- package/dart-src/plugins/aws/pubspec.yaml +22 -0
- package/dart-src/plugins/cloudflare/.gitkeep +0 -0
- package/dart-src/plugins/cloudflare/lib/flutter_patcher_cloudflare.dart +18 -0
- package/dart-src/plugins/cloudflare/lib/src/cloudflare_worker_database.dart +29 -0
- package/dart-src/plugins/cloudflare/lib/src/d1_build_where.dart +93 -0
- package/dart-src/plugins/cloudflare/lib/src/d1_bundle_mapper.dart +131 -0
- package/dart-src/plugins/cloudflare/lib/src/d1_client.dart +66 -0
- package/dart-src/plugins/cloudflare/lib/src/d1_config.dart +30 -0
- package/dart-src/plugins/cloudflare/lib/src/d1_database.dart +16 -0
- package/dart-src/plugins/cloudflare/lib/src/d1_database_plugin.dart +314 -0
- package/dart-src/plugins/cloudflare/lib/src/r2_config.dart +50 -0
- package/dart-src/plugins/cloudflare/lib/src/r2_s3_client.dart +287 -0
- package/dart-src/plugins/cloudflare/lib/src/r2_storage.dart +23 -0
- package/dart-src/plugins/cloudflare/lib/src/r2_storage_profile.dart +110 -0
- package/dart-src/plugins/cloudflare/migrations/0001_hot-updater_init.sql +16 -0
- package/dart-src/plugins/cloudflare/migrations/0002_hot-updater_0.13.0.sql +8 -0
- package/dart-src/plugins/cloudflare/migrations/0003_hot-updater_0.18.0.sql +38 -0
- package/dart-src/plugins/cloudflare/migrations/0004_hot-updater_0.29.0.sql +11 -0
- package/dart-src/plugins/cloudflare/migrations/0005_hot-updater_0.31.0.sql +24 -0
- package/dart-src/plugins/cloudflare/pubspec.lock +411 -0
- package/dart-src/plugins/cloudflare/pubspec.yaml +20 -0
- package/dart-src/plugins/cloudflare/sql/bundles.sql +42 -0
- package/dart-src/plugins/plugin-core/lib/flutter_patcher_plugin_core.dart +42 -0
- package/dart-src/plugins/plugin-core/lib/src/asset_storage_layout.dart +94 -0
- package/dart-src/plugins/plugin-core/lib/src/bundle_storage_layout.dart +44 -0
- package/dart-src/plugins/plugin-core/lib/src/bundle_unit_of_work.dart +259 -0
- package/dart-src/plugins/plugin-core/lib/src/bundle_unit_of_work_store.dart +20 -0
- package/dart-src/plugins/plugin-core/lib/src/calculate_pagination.dart +29 -0
- package/dart-src/plugins/plugin-core/lib/src/compression_format.dart +63 -0
- package/dart-src/plugins/plugin-core/lib/src/content_addressed_assets.dart +22 -0
- package/dart-src/plugins/plugin-core/lib/src/create_blob_database_plugin.dart +853 -0
- package/dart-src/plugins/plugin-core/lib/src/create_database_plugin.dart +525 -0
- package/dart-src/plugins/plugin-core/lib/src/create_storage_key_builder.dart +15 -0
- package/dart-src/plugins/plugin-core/lib/src/create_storage_plugin.dart +130 -0
- package/dart-src/plugins/plugin-core/lib/src/filter_compatible_app_versions.dart +18 -0
- package/dart-src/plugins/plugin-core/lib/src/generate_min_bundle_id.dart +19 -0
- package/dart-src/plugins/plugin-core/lib/src/get_update_info.dart +241 -0
- package/dart-src/plugins/plugin-core/lib/src/is_object.dart +5 -0
- package/dart-src/plugins/plugin-core/lib/src/legacy_asset_storage_layout.dart +9 -0
- package/dart-src/plugins/plugin-core/lib/src/paginate_bundles.dart +112 -0
- package/dart-src/plugins/plugin-core/lib/src/parse_storage_uri.dart +44 -0
- package/dart-src/plugins/plugin-core/lib/src/query_bundles.dart +70 -0
- package/dart-src/plugins/plugin-core/lib/src/request_update_bundle_state.dart +62 -0
- package/dart-src/plugins/plugin-core/lib/src/resolve_update_info_from_bundles.dart +43 -0
- package/dart-src/plugins/plugin-core/lib/src/storage_profile.dart +27 -0
- package/dart-src/plugins/plugin-core/lib/src/types.dart +454 -0
- package/dart-src/plugins/plugin-core/lib/src/uuidv7.dart +41 -0
- package/dart-src/plugins/plugin-core/pubspec.lock +396 -0
- package/dart-src/plugins/plugin-core/pubspec.yaml +15 -0
- package/dart-src/plugins/postgres/.gitkeep +0 -0
- package/dart-src/plugins/postgres/lib/flutter_patcher_postgres.dart +17 -0
- package/dart-src/plugins/postgres/lib/src/postgres_bundle_mapper.dart +130 -0
- package/dart-src/plugins/postgres/lib/src/postgres_client.dart +90 -0
- package/dart-src/plugins/postgres/lib/src/postgres_config.dart +35 -0
- package/dart-src/plugins/postgres/lib/src/postgres_database.dart +302 -0
- package/dart-src/plugins/postgres/lib/src/postgres_get_update_info.dart +120 -0
- package/dart-src/plugins/postgres/lib/src/postgres_storage.dart +205 -0
- package/dart-src/plugins/postgres/lib/src/postgres_types.dart +132 -0
- package/dart-src/plugins/postgres/pubspec.lock +427 -0
- package/dart-src/plugins/postgres/pubspec.yaml +18 -0
- package/dart-src/plugins/postgres/sql/bundles.sql +45 -0
- package/dart-src/plugins/postgres/sql/get_target_app_version_list.sql +21 -0
- package/dart-src/plugins/postgres/sql/get_update_info.spec.ts +171 -0
- package/dart-src/plugins/postgres/sql/get_update_info_by_app_version.sql +126 -0
- package/dart-src/plugins/postgres/sql/get_update_info_by_fingerprint_hash.sql +125 -0
- package/dart-src/plugins/postgres/sql/hash_user_id.sql +30 -0
- package/dart-src/plugins/postgres/sql/is_device_eligible.sql +237 -0
- package/dart-src/plugins/postgres/sql/prepareSql.ts +11 -0
- package/dart-src/plugins/standalone/.gitkeep +0 -0
- package/dart-src/plugins/standalone/lib/flutter_patcher_standalone.dart +12 -0
- package/dart-src/plugins/standalone/lib/src/standalone_config.dart +107 -0
- package/dart-src/plugins/standalone/lib/src/standalone_database.dart +233 -0
- package/dart-src/plugins/standalone/lib/src/standalone_storage.dart +175 -0
- package/dart-src/plugins/standalone/pubspec.lock +411 -0
- package/dart-src/plugins/standalone/pubspec.yaml +18 -0
- package/dart-src/plugins/supabase/lib/edge.dart +10 -0
- package/dart-src/plugins/supabase/lib/flutter_patcher_supabase.dart +21 -0
- package/dart-src/plugins/supabase/lib/src/supabase_bundle_mapper.dart +129 -0
- package/dart-src/plugins/supabase/lib/src/supabase_client_adapter.dart +154 -0
- package/dart-src/plugins/supabase/lib/src/supabase_client_http.dart +516 -0
- package/dart-src/plugins/supabase/lib/src/supabase_config.dart +34 -0
- package/dart-src/plugins/supabase/lib/src/supabase_database.dart +422 -0
- package/dart-src/plugins/supabase/lib/src/supabase_edge_function_database.dart +32 -0
- package/dart-src/plugins/supabase/lib/src/supabase_edge_function_storage.dart +99 -0
- package/dart-src/plugins/supabase/lib/src/supabase_signed_url_batcher.dart +145 -0
- package/dart-src/plugins/supabase/lib/src/supabase_storage.dart +298 -0
- package/dart-src/plugins/supabase/lib/src/types.dart +130 -0
- package/dart-src/plugins/supabase/pubspec.lock +515 -0
- package/dart-src/plugins/supabase/pubspec.yaml +19 -0
- package/dart-src/plugins/supabase/supabase/edge-functions/index.ts +44 -0
- package/dart-src/plugins/supabase/supabase/edge-functions/runtime.docker.integration.spec.ts +968 -0
- package/dart-src/plugins/supabase/supabase/migrations/20250103114225_init.sql +228 -0
- package/dart-src/plugins/supabase/supabase/migrations/20250314000000_hot-updater_0.13.0.sql +134 -0
- package/dart-src/plugins/supabase/supabase/migrations/20250516000000_hot-updater_0.18.0.sql +194 -0
- package/dart-src/plugins/supabase/supabase/migrations/20251014000000_hot-updater_0.21.0.sql +184 -0
- package/dart-src/plugins/supabase/supabase/migrations/20260401000000_hot-updater_0.29.0.sql +503 -0
- package/dart-src/plugins/supabase/supabase/migrations/20260414000000_hot-updater_0.30.0.sql +50 -0
- package/dart-src/plugins/supabase/supabase/migrations/20260422000000_hot-updater_0.31.0.sql +20 -0
- package/dart-src/plugins/supabase/supabase/migrations/20260520014100_hot-updater_rls.sql +48 -0
- package/package.json +2 -1
- package/scripts/postinstall.js +32 -23
- /package/bin/{flutter-patcher-linux → flutter-patcher-linux-x64} +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
-- HotUpdater.is_cohort_eligible
|
|
2
|
+
CREATE OR REPLACE FUNCTION is_cohort_eligible(
|
|
3
|
+
bundle_id UUID,
|
|
4
|
+
cohort TEXT,
|
|
5
|
+
rollout_cohort_count INTEGER,
|
|
6
|
+
target_cohorts TEXT[]
|
|
7
|
+
)
|
|
8
|
+
RETURNS BOOLEAN
|
|
9
|
+
LANGUAGE plpgsql
|
|
10
|
+
IMMUTABLE
|
|
11
|
+
AS $$
|
|
12
|
+
DECLARE
|
|
13
|
+
normalized_cohort TEXT := normalize_cohort_value(cohort);
|
|
14
|
+
normalized_rollout_count INTEGER := COALESCE(rollout_cohort_count, 1000);
|
|
15
|
+
normalized_target_cohorts TEXT[];
|
|
16
|
+
BEGIN
|
|
17
|
+
IF target_cohorts IS NOT NULL THEN
|
|
18
|
+
normalized_target_cohorts := ARRAY(
|
|
19
|
+
SELECT normalize_cohort_value(value)
|
|
20
|
+
FROM unnest(target_cohorts) AS value
|
|
21
|
+
);
|
|
22
|
+
END IF;
|
|
23
|
+
|
|
24
|
+
IF normalized_target_cohorts IS NOT NULL
|
|
25
|
+
AND array_length(normalized_target_cohorts, 1) > 0
|
|
26
|
+
AND normalized_cohort IS NOT NULL
|
|
27
|
+
AND normalized_cohort = ANY(normalized_target_cohorts) THEN
|
|
28
|
+
RETURN TRUE;
|
|
29
|
+
END IF;
|
|
30
|
+
|
|
31
|
+
IF normalized_rollout_count <= 0 THEN
|
|
32
|
+
RETURN FALSE;
|
|
33
|
+
END IF;
|
|
34
|
+
|
|
35
|
+
IF normalized_cohort IS NULL THEN
|
|
36
|
+
RETURN normalized_rollout_count >= 1000;
|
|
37
|
+
END IF;
|
|
38
|
+
|
|
39
|
+
IF NOT is_numeric_cohort(normalized_cohort) THEN
|
|
40
|
+
RETURN FALSE;
|
|
41
|
+
END IF;
|
|
42
|
+
|
|
43
|
+
IF normalized_rollout_count >= 1000 THEN
|
|
44
|
+
RETURN TRUE;
|
|
45
|
+
END IF;
|
|
46
|
+
|
|
47
|
+
RETURN get_numeric_cohort_rollout_position(bundle_id, normalized_cohort)
|
|
48
|
+
< normalized_rollout_count;
|
|
49
|
+
END;
|
|
50
|
+
$$;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- HotUpdater.bundle_artifact_columns
|
|
2
|
+
|
|
3
|
+
ALTER TABLE bundles ADD COLUMN IF NOT EXISTS manifest_storage_uri text;
|
|
4
|
+
ALTER TABLE bundles ADD COLUMN IF NOT EXISTS manifest_file_hash text;
|
|
5
|
+
ALTER TABLE bundles ADD COLUMN IF NOT EXISTS asset_base_storage_uri text;
|
|
6
|
+
|
|
7
|
+
CREATE TABLE IF NOT EXISTS bundle_patches (
|
|
8
|
+
id text PRIMARY KEY,
|
|
9
|
+
bundle_id uuid NOT NULL REFERENCES bundles(id) ON DELETE CASCADE,
|
|
10
|
+
base_bundle_id uuid NOT NULL REFERENCES bundles(id) ON DELETE CASCADE,
|
|
11
|
+
base_file_hash text NOT NULL,
|
|
12
|
+
patch_file_hash text NOT NULL,
|
|
13
|
+
patch_storage_uri text NOT NULL,
|
|
14
|
+
order_index integer NOT NULL DEFAULT 0
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
CREATE INDEX IF NOT EXISTS bundle_patches_bundle_id_idx
|
|
18
|
+
ON bundle_patches(bundle_id);
|
|
19
|
+
CREATE INDEX IF NOT EXISTS bundle_patches_base_bundle_id_idx
|
|
20
|
+
ON bundle_patches(base_bundle_id);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
-- HotUpdater.supabase_rls
|
|
2
|
+
|
|
3
|
+
ALTER TABLE public.bundles ENABLE ROW LEVEL SECURITY;
|
|
4
|
+
ALTER TABLE public.bundle_patches ENABLE ROW LEVEL SECURITY;
|
|
5
|
+
|
|
6
|
+
ALTER FUNCTION public.get_target_app_version_list(public.platforms, uuid)
|
|
7
|
+
SET search_path = public, pg_catalog;
|
|
8
|
+
ALTER FUNCTION public.get_channels()
|
|
9
|
+
SET search_path = public, pg_catalog;
|
|
10
|
+
ALTER FUNCTION public.positive_mod(integer, integer)
|
|
11
|
+
SET search_path = public, pg_catalog;
|
|
12
|
+
ALTER FUNCTION public.hash_rollout_value(text)
|
|
13
|
+
SET search_path = public, pg_catalog;
|
|
14
|
+
ALTER FUNCTION public.normalize_cohort_value(text)
|
|
15
|
+
SET search_path = public, pg_catalog;
|
|
16
|
+
ALTER FUNCTION public.gcd_int(integer, integer)
|
|
17
|
+
SET search_path = public, pg_catalog;
|
|
18
|
+
ALTER FUNCTION public.get_rollout_multiplier(uuid)
|
|
19
|
+
SET search_path = public, pg_catalog;
|
|
20
|
+
ALTER FUNCTION public.get_rollout_offset(uuid)
|
|
21
|
+
SET search_path = public, pg_catalog;
|
|
22
|
+
ALTER FUNCTION public.get_modular_inverse(integer, integer)
|
|
23
|
+
SET search_path = public, pg_catalog;
|
|
24
|
+
ALTER FUNCTION public.is_numeric_cohort(text)
|
|
25
|
+
SET search_path = public, pg_catalog;
|
|
26
|
+
ALTER FUNCTION public.get_numeric_cohort_rollout_position(uuid, text)
|
|
27
|
+
SET search_path = public, pg_catalog;
|
|
28
|
+
ALTER FUNCTION public.is_cohort_eligible(uuid, text, integer, text[])
|
|
29
|
+
SET search_path = public, pg_catalog;
|
|
30
|
+
ALTER FUNCTION public.get_update_info_by_fingerprint_hash(
|
|
31
|
+
public.platforms,
|
|
32
|
+
uuid,
|
|
33
|
+
uuid,
|
|
34
|
+
text,
|
|
35
|
+
text,
|
|
36
|
+
text
|
|
37
|
+
)
|
|
38
|
+
SET search_path = public, pg_catalog;
|
|
39
|
+
ALTER FUNCTION public.get_update_info_by_app_version(
|
|
40
|
+
public.platforms,
|
|
41
|
+
text,
|
|
42
|
+
uuid,
|
|
43
|
+
uuid,
|
|
44
|
+
text,
|
|
45
|
+
text[],
|
|
46
|
+
text
|
|
47
|
+
)
|
|
48
|
+
SET search_path = public, pg_catalog;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@_nazmiforreal/flutter-ota",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Command-line interface for flutter_patcher — an OTA code-push tool for Flutter, hot-updater compatible.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"flutter-patcher": "./bin/flutter-patcher.js"
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"bin",
|
|
13
13
|
"scripts",
|
|
14
|
+
"dart-src",
|
|
14
15
|
"migrations",
|
|
15
16
|
"README.md"
|
|
16
17
|
],
|
package/scripts/postinstall.js
CHANGED
|
@@ -2,52 +2,61 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
// Post-install: ensure a runnable flutter-patcher binary exists next to the
|
|
5
|
-
// launcher
|
|
6
|
-
//
|
|
5
|
+
// launcher for the current platform+arch. If a prebuilt
|
|
6
|
+
// `flutter-patcher-<os>-<arch>` binary ships in `bin/`, use it. Otherwise, when
|
|
7
|
+
// the Dart SDK is present, compile one from the bundled Dart source so the
|
|
8
|
+
// package works on architectures we did not prebuild (e.g. arm64).
|
|
7
9
|
|
|
8
10
|
const { spawnSync } = require('child_process');
|
|
9
11
|
const fs = require('fs');
|
|
10
12
|
const path = require('path');
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
process.platform === 'win32'
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
function platform() {
|
|
15
|
+
if (process.platform === 'win32') return 'windows';
|
|
16
|
+
if (process.platform === 'darwin') return 'macos';
|
|
17
|
+
return 'linux';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function arch() {
|
|
21
|
+
return process.arch === 'arm64' ? 'arm64' : 'x64';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const platformName = platform();
|
|
25
|
+
const archName = arch();
|
|
18
26
|
const ext = process.platform === 'win32' ? '.exe' : '';
|
|
19
27
|
const pkgDir = path.join(__dirname, '..');
|
|
20
28
|
const binDir = path.join(pkgDir, 'bin');
|
|
21
|
-
const target = path.join(binDir, `flutter-patcher-${
|
|
29
|
+
const target = path.join(binDir, `flutter-patcher-${platformName}-${archName}${ext}`);
|
|
22
30
|
|
|
23
31
|
if (fs.existsSync(target)) {
|
|
24
|
-
console.log(
|
|
32
|
+
console.log(`flutter-patcher: prebuilt binary present (${platformName}-${archName}), skipping build.`);
|
|
25
33
|
process.exit(0);
|
|
26
34
|
}
|
|
27
35
|
|
|
28
36
|
const dartCheck = spawnSync('dart', ['--version'], { stdio: 'ignore' });
|
|
29
37
|
if (dartCheck.status !== 0) {
|
|
30
38
|
console.warn(
|
|
31
|
-
|
|
32
|
-
|
|
39
|
+
`flutter-patcher: Dart SDK not found; skipping build. Provide a prebuilt ` +
|
|
40
|
+
`binary (bin/flutter-patcher-${platformName}-${archName}${ext}) or install ` +
|
|
41
|
+
'the Dart SDK (https://dart.dev).',
|
|
33
42
|
);
|
|
34
43
|
process.exit(0);
|
|
35
44
|
}
|
|
36
45
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const dartEntry = path.join(
|
|
40
|
-
repoRoot,
|
|
41
|
-
'packages',
|
|
42
|
-
'cli-tools',
|
|
43
|
-
'bin',
|
|
44
|
-
'flutter_patcher.dart',
|
|
46
|
+
const sourceEntry = path.join(
|
|
47
|
+
pkgDir, 'dart-src', 'packages', 'cli-tools', 'bin', 'flutter_patcher.dart',
|
|
45
48
|
);
|
|
49
|
+
if (!fs.existsSync(sourceEntry)) {
|
|
50
|
+
console.warn('flutter-patcher: bundled Dart source not found; skipping build.');
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
46
53
|
|
|
47
|
-
|
|
54
|
+
// Compile from within the cli-tools package dir so its pubspec (and local path
|
|
55
|
+
// dependencies) resolve correctly.
|
|
56
|
+
console.log('flutter-patcher: building native binary with `dart compile exe`...');
|
|
48
57
|
const res = spawnSync(
|
|
49
58
|
'dart',
|
|
50
|
-
['compile', 'exe',
|
|
51
|
-
{ stdio: 'inherit' },
|
|
59
|
+
['compile', 'exe', 'bin/flutter_patcher.dart', '-o', target],
|
|
60
|
+
{ stdio: 'inherit', cwd: path.dirname(path.dirname(sourceEntry)) },
|
|
52
61
|
);
|
|
53
62
|
process.exit(res.status == null ? 1 : res.status);
|
|
File without changes
|