@_nazmiforreal/flutter-ota 0.1.0 → 0.1.2
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 +48 -39
- 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.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.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.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.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.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.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.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.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 +53 -25
- /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.2",
|
|
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,80 @@
|
|
|
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).
|
|
9
|
+
//
|
|
10
|
+
// We explicitly run `dart pub get` first so dependency resolution is reliable
|
|
11
|
+
// (a stale/locked tree would otherwise fail to fetch packages). If compilation
|
|
12
|
+
// cannot be performed we warn (and exit 0) rather than failing the whole npm
|
|
13
|
+
// install — the launcher prints a clear "how to build" message at runtime.
|
|
7
14
|
|
|
8
15
|
const { spawnSync } = require('child_process');
|
|
9
16
|
const fs = require('fs');
|
|
10
17
|
const path = require('path');
|
|
11
18
|
|
|
12
|
-
|
|
13
|
-
process.platform === 'win32'
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
function platform() {
|
|
20
|
+
if (process.platform === 'win32') return 'windows';
|
|
21
|
+
if (process.platform === 'darwin') return 'macos';
|
|
22
|
+
return 'linux';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function arch() {
|
|
26
|
+
return process.arch === 'arm64' ? 'arm64' : 'x64';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const platformName = platform();
|
|
30
|
+
const archName = arch();
|
|
18
31
|
const ext = process.platform === 'win32' ? '.exe' : '';
|
|
19
32
|
const pkgDir = path.join(__dirname, '..');
|
|
20
33
|
const binDir = path.join(pkgDir, 'bin');
|
|
21
|
-
const target = path.join(binDir, `flutter-patcher-${
|
|
34
|
+
const target = path.join(binDir, `flutter-patcher-${platformName}-${archName}${ext}`);
|
|
35
|
+
const cliDir = path.join(pkgDir, 'dart-src', 'packages', 'cli-tools');
|
|
22
36
|
|
|
23
37
|
if (fs.existsSync(target)) {
|
|
24
|
-
console.log(
|
|
38
|
+
console.log(`flutter-patcher: prebuilt binary present (${platformName}-${archName}), skipping build.`);
|
|
25
39
|
process.exit(0);
|
|
26
40
|
}
|
|
27
41
|
|
|
28
42
|
const dartCheck = spawnSync('dart', ['--version'], { stdio: 'ignore' });
|
|
29
43
|
if (dartCheck.status !== 0) {
|
|
30
44
|
console.warn(
|
|
31
|
-
|
|
32
|
-
|
|
45
|
+
`flutter-patcher: Dart SDK not found; skipping build. Provide a prebuilt ` +
|
|
46
|
+
`binary (bin/flutter-patcher-${platformName}-${archName}${ext}) or install ` +
|
|
47
|
+
'the Dart SDK (https://dart.dev).',
|
|
33
48
|
);
|
|
34
49
|
process.exit(0);
|
|
35
50
|
}
|
|
36
51
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
if (!fs.existsSync(path.join(cliDir, 'pubspec.yaml'))) {
|
|
53
|
+
console.warn('flutter-patcher: bundled Dart source not found; skipping build.');
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
console.log('flutter-patcher: resolving Dart dependencies (dart pub get)...');
|
|
58
|
+
const getRes = spawnSync('dart', ['pub', 'get'], { stdio: 'inherit', cwd: cliDir });
|
|
59
|
+
if (getRes.status !== 0) {
|
|
60
|
+
console.warn(
|
|
61
|
+
'flutter-patcher: `dart pub get` failed (check your network / Dart version). ' +
|
|
62
|
+
`To build manually:\n cd ${cliDir} && dart compile exe bin/flutter_patcher.dart ` +
|
|
63
|
+
`-o ${target}`,
|
|
64
|
+
);
|
|
65
|
+
process.exit(0);
|
|
66
|
+
}
|
|
46
67
|
|
|
47
|
-
console.log('flutter-patcher: building binary with `dart compile exe`...');
|
|
68
|
+
console.log('flutter-patcher: building native binary with `dart compile exe`...');
|
|
48
69
|
const res = spawnSync(
|
|
49
70
|
'dart',
|
|
50
|
-
['compile', 'exe',
|
|
51
|
-
{ stdio: 'inherit' },
|
|
71
|
+
['compile', 'exe', 'bin/flutter_patcher.dart', '-o', target],
|
|
72
|
+
{ stdio: 'inherit', cwd: cliDir },
|
|
52
73
|
);
|
|
53
|
-
|
|
74
|
+
if (res.status !== 0) {
|
|
75
|
+
console.warn(
|
|
76
|
+
'flutter-patcher: build failed. To build manually:\n cd ' +
|
|
77
|
+
`${cliDir} && dart compile exe bin/flutter_patcher.dart -o ${target}`,
|
|
78
|
+
);
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
console.log(`flutter-patcher: built ${target}`);
|
|
File without changes
|