react-native-bspatch 1.0.0 → 1.0.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OtaUpdateMode","exports","OtaStorageType","OtaStatus"],"sourceRoot":"../../../src","sources":["ota/types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AAFA,IAuBYA,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAObE,cAAc,GAAAD,OAAA,CAAAC,cAAA,0BAAdA,cAAc;EACtB;EADQA,cAAc;EAGtB;EAHQA,cAAc;EAAA,OAAdA,cAAc;AAAA;
|
|
1
|
+
{"version":3,"names":["OtaUpdateMode","exports","OtaStorageType","OtaStatus"],"sourceRoot":"../../../src","sources":["ota/types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AAFA,IAuBYA,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAObE,cAAc,GAAAD,OAAA,CAAAC,cAAA,0BAAdA,cAAc;EACtB;EADQA,cAAc;EAGtB;EAHQA,cAAc;EAAA,OAAdA,cAAc;AAAA;AA4C1B;AACA;AACA;AAFA,IAiHYC,SAAS,GAAAF,OAAA,CAAAE,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OtaUpdateMode","OtaStorageType","OtaStatus"],"sourceRoot":"../../../src","sources":["ota/types.ts"],"mappings":";;AAAA;AACA;AACA;;AAqBA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAOzB,WAAYC,cAAc,0BAAdA,cAAc;EACtB;EADQA,cAAc;EAGtB;EAHQA,cAAc;EAAA,OAAdA,cAAc;AAAA;;
|
|
1
|
+
{"version":3,"names":["OtaUpdateMode","OtaStorageType","OtaStatus"],"sourceRoot":"../../../src","sources":["ota/types.ts"],"mappings":";;AAAA;AACA;AACA;;AAqBA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAOzB,WAAYC,cAAc,0BAAdA,cAAc;EACtB;EADQA,cAAc;EAGtB;EAHQA,cAAc;EAAA,OAAdA,cAAc;AAAA;;AA4C1B;AACA;AACA;;AA+GA,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ota/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IAC/B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEtD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvE;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9E;AAED,oBAAY,aAAa;IACrB,MAAM,WAAW;IACjB,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;CAC9C;AAED,oBAAY,cAAc;IACtB,sCAAsC;IACtC,MAAM,WAAW;IACjB,sDAAsD;IACtD,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,QAAQ,GAAG;IACnB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ota/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,89 +1,88 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
2
|
+
"name": "react-native-bspatch",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Premium OTA Update Solution for React Native using TurboModules and bsdiff",
|
|
5
|
+
"main": "lib/commonjs/index.js",
|
|
6
|
+
"module": "lib/module/index.js",
|
|
7
|
+
"types": "lib/typescript/index.d.ts",
|
|
8
|
+
"react-native": "src/index.ts",
|
|
9
|
+
"source": "src/index.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"android",
|
|
12
|
+
"ios",
|
|
13
|
+
"cpp",
|
|
14
|
+
"src",
|
|
15
|
+
"lib",
|
|
16
|
+
"tools",
|
|
17
|
+
"react-native-bspatch.podspec",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"!**/__tests__",
|
|
21
|
+
"!**/__fixtures__",
|
|
22
|
+
"!**/__mocks__"
|
|
23
|
+
],
|
|
24
|
+
"keywords": [
|
|
25
|
+
"react-native",
|
|
26
|
+
"ota",
|
|
27
|
+
"update",
|
|
28
|
+
"bspatch",
|
|
29
|
+
"bsdiff",
|
|
30
|
+
"turbo-module",
|
|
31
|
+
"android",
|
|
32
|
+
"ios"
|
|
33
|
+
],
|
|
34
|
+
"codegenConfig": {
|
|
35
|
+
"name": "RNBsPatchSpec",
|
|
36
|
+
"type": "modules",
|
|
37
|
+
"jsSrcsDir": "src"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"react": "*",
|
|
41
|
+
"react-native": "*",
|
|
42
|
+
"react-native-blob-util": "*"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"crypto-js": "^4.2.0"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/BuiHung1612/react-native-bspatch.git"
|
|
50
|
+
},
|
|
51
|
+
"author": "Hung Bui <https://github.com/BuiHung1612>",
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/BuiHung1612/react-native-bspatch/issues"
|
|
55
|
+
},
|
|
56
|
+
"homepage": "https://github.com/BuiHung1612/react-native-bspatch#readme",
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"access": "public"
|
|
59
|
+
},
|
|
60
|
+
"bin": {
|
|
61
|
+
"react-native-bspatch": "./tools/build_ota.sh"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"setup": "node ./tools/setup_project.js",
|
|
65
|
+
"typecheck": "tsc --noEmit",
|
|
66
|
+
"prepare": "bob build"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@types/crypto-js": "^4.2.2",
|
|
70
|
+
"@types/react": "^19.2.0",
|
|
71
|
+
"react-native-builder-bob": "^0.43.0",
|
|
72
|
+
"typescript": "^5.0.0"
|
|
73
|
+
},
|
|
74
|
+
"react-native-builder-bob": {
|
|
75
|
+
"source": "src",
|
|
76
|
+
"output": "lib",
|
|
77
|
+
"targets": [
|
|
78
|
+
"commonjs",
|
|
79
|
+
"module",
|
|
80
|
+
[
|
|
81
|
+
"typescript",
|
|
82
|
+
{
|
|
83
|
+
"project": "tsconfig.build.json"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
]
|
|
87
|
+
}
|
|
89
88
|
}
|
package/src/ota/types.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
3
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
# Custom OTA Upload Script for Sync Server
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
# 2) ota_registry.json → {baseFolder}/ota_registry.json
|
|
4
|
+
# Custom OTA Upload Script for Sync Server & GitHub Storage
|
|
5
|
+
# Uploads: 1) All .patch & .hbc files → {baseFolder}/{appVersion}/{channel}/
|
|
6
|
+
# 2) ota_registry.json → {baseFolder}/ota_registry.json
|
|
8
7
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
# Load environment variables if .env exists
|
|
10
|
+
ROOT_DIR=$(pwd)
|
|
11
|
+
if [ -f "$ROOT_DIR/.env" ]; then
|
|
12
|
+
export $(grep -v '^#' "$ROOT_DIR/.env" | grep -v '^$' | xargs 2>/dev/null)
|
|
13
|
+
fi
|
|
15
14
|
|
|
15
|
+
BASE_URL="${OTA_BASE_URL:-}"
|
|
16
|
+
UPCODE_USER="${OTA_UPLOAD_USER:-}"
|
|
17
|
+
UPCODE_PASS="${OTA_UPLOAD_PASSWORD:-}"
|
|
18
|
+
BASE_FOLDER="${OTA_FOLDER:-${6:-ota}}"
|
|
16
19
|
APP_VERSION="$1"
|
|
17
20
|
CHANNEL="$2"
|
|
18
21
|
OTA_VERSION="$3"
|
|
19
22
|
BUNDLE_PATH="$4" # unused — we upload .patch files, not the bundle
|
|
20
23
|
PLATFORM="$5"
|
|
21
|
-
BASE_FOLDER="${6:-congplqg}"
|
|
22
24
|
|
|
23
|
-
ROOT_DIR=$(pwd)
|
|
24
25
|
REGISTRY_FILE="$ROOT_DIR/ota_registry.json"
|
|
25
26
|
OUTPUT_DIR="$ROOT_DIR/android/output"
|
|
26
27
|
if [[ "$PLATFORM" == "ios" ]]; then
|
|
@@ -28,7 +29,7 @@ if [[ "$PLATFORM" == "ios" ]]; then
|
|
|
28
29
|
fi
|
|
29
30
|
|
|
30
31
|
echo ""
|
|
31
|
-
echo "=== Custom OTA Upload | App: $APP_VERSION | Channel: $CHANNEL | V$OTA_VERSION ==="
|
|
32
|
+
echo "=== Custom OTA Upload | App: $APP_VERSION | Channel: $CHANNEL | V$OTA_VERSION | Platform: $PLATFORM ==="
|
|
32
33
|
echo " Output dir: $OUTPUT_DIR"
|
|
33
34
|
|
|
34
35
|
# Validate
|
|
@@ -41,8 +42,97 @@ if [[ ! -f "$REGISTRY_FILE" ]]; then
|
|
|
41
42
|
exit 1
|
|
42
43
|
fi
|
|
43
44
|
|
|
44
|
-
#
|
|
45
|
-
|
|
45
|
+
# ── GitHub Auto-Push Integration ──────────────────────────────────────────────
|
|
46
|
+
if [[ "$BASE_URL" == *"github"* ]] || [[ "$BASE_URL" == *"raw.githubusercontent"* ]]; then
|
|
47
|
+
# Parse OWNER, REPO, BRANCH from URL
|
|
48
|
+
# Example: https://raw.githubusercontent.com/hungbv-taureau/baseform-storage/main
|
|
49
|
+
CLEAN_URL=$(echo "$BASE_URL" | sed 's#https://raw.githubusercontent.com/##' | sed 's#https://github.com/##')
|
|
50
|
+
OWNER=$(echo "$CLEAN_URL" | cut -d'/' -f1)
|
|
51
|
+
REPO=$(echo "$CLEAN_URL" | cut -d'/' -f2)
|
|
52
|
+
BRANCH=$(echo "$CLEAN_URL" | cut -d'/' -f3)
|
|
53
|
+
if [[ -z "$BRANCH" ]]; then BRANCH="main"; fi
|
|
54
|
+
|
|
55
|
+
# Check for gh token or env tokens
|
|
56
|
+
GH_CLI_TOKEN=$(gh auth token 2>/dev/null || true)
|
|
57
|
+
TOKEN="${GH_CLI_TOKEN:-${GH_TOKEN:-${GITHUB_TOKEN:-}}}"
|
|
58
|
+
if [[ "$TOKEN" == "baseform" ]]; then TOKEN=""; fi
|
|
59
|
+
|
|
60
|
+
if [[ -n "$TOKEN" ]]; then
|
|
61
|
+
GIT_REMOTE="https://x-access-token:${TOKEN}@github.com/${OWNER}/${REPO}.git"
|
|
62
|
+
echo " Using authenticated gh CLI token for ${OWNER}/${REPO}"
|
|
63
|
+
else
|
|
64
|
+
GIT_REMOTE="git@github.com:${OWNER}/${REPO}.git"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
GH_REPO_DIR="/tmp/ota_git_repo_${REPO}"
|
|
68
|
+
|
|
69
|
+
echo ""
|
|
70
|
+
echo "=== Auto Syncing OTA Release to GitHub Storage ==="
|
|
71
|
+
echo " Target Repo : ${OWNER}/${REPO}"
|
|
72
|
+
echo " Branch : ${BRANCH}"
|
|
73
|
+
|
|
74
|
+
# 1. Clone or Pull target storage repo
|
|
75
|
+
if [ -d "$GH_REPO_DIR/.git" ]; then
|
|
76
|
+
echo " Syncing local storage clone with remote..."
|
|
77
|
+
git -C "$GH_REPO_DIR" remote set-url origin "$GIT_REMOTE" 2>/dev/null || true
|
|
78
|
+
git -C "$GH_REPO_DIR" fetch origin "$BRANCH" 2>/dev/null || true
|
|
79
|
+
git -C "$GH_REPO_DIR" checkout "$BRANCH" 2>/dev/null || true
|
|
80
|
+
git -C "$GH_REPO_DIR" reset --hard "origin/$BRANCH" 2>/dev/null || true
|
|
81
|
+
else
|
|
82
|
+
echo " Cloning storage repository..."
|
|
83
|
+
rm -rf "$GH_REPO_DIR"
|
|
84
|
+
git clone --branch "$BRANCH" --depth 1 "$GIT_REMOTE" "$GH_REPO_DIR" 2>/dev/null || git clone "$GIT_REMOTE" "$GH_REPO_DIR"
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
# 2. Copy generated files into storage repo
|
|
88
|
+
TARGET_RELEASE_DIR="$GH_REPO_DIR/$BASE_FOLDER/$APP_VERSION/$CHANNEL"
|
|
89
|
+
mkdir -p "$TARGET_RELEASE_DIR"
|
|
90
|
+
|
|
91
|
+
echo " Copying release files to storage repo..."
|
|
92
|
+
for FILE in "$OUTPUT_DIR"/*.{patch,hbc,json}; do
|
|
93
|
+
[[ -f "$FILE" ]] || continue
|
|
94
|
+
FNAME=$(basename "$FILE")
|
|
95
|
+
cp "$FILE" "$TARGET_RELEASE_DIR/$FNAME"
|
|
96
|
+
done
|
|
97
|
+
|
|
98
|
+
# Copy asset store if present
|
|
99
|
+
if [[ -d "$OUTPUT_DIR/asset-store" ]]; then
|
|
100
|
+
TARGET_ASSET_DIR="$GH_REPO_DIR/$BASE_FOLDER/assets"
|
|
101
|
+
mkdir -p "$TARGET_ASSET_DIR"
|
|
102
|
+
cp -R "$OUTPUT_DIR/asset-store/"* "$TARGET_ASSET_DIR/" 2>/dev/null || true
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# Copy ota_registry.json
|
|
106
|
+
mkdir -p "$GH_REPO_DIR/$BASE_FOLDER"
|
|
107
|
+
cp "$REGISTRY_FILE" "$GH_REPO_DIR/$BASE_FOLDER/ota_registry.json"
|
|
108
|
+
cp "$REGISTRY_FILE" "$GH_REPO_DIR/ota_registry.json" 2>/dev/null || true
|
|
109
|
+
|
|
110
|
+
# 3. Commit and Push to GitHub
|
|
111
|
+
cd "$GH_REPO_DIR"
|
|
112
|
+
git config user.name "hungbv-taureau" 2>/dev/null || true
|
|
113
|
+
git config user.email "hungbv@taureau.ai" 2>/dev/null || true
|
|
114
|
+
git add .
|
|
115
|
+
if git diff --staged --quiet; then
|
|
116
|
+
echo " ✓ Storage repository is up to date (no changes)."
|
|
117
|
+
else
|
|
118
|
+
echo " Committing OTA release (App: $APP_VERSION v$OTA_VERSION)..."
|
|
119
|
+
git commit -m "auto(ota): publish $PLATFORM $APP_VERSION v$OTA_VERSION ($CHANNEL)"
|
|
120
|
+
echo " Pushing to GitHub (${BRANCH})..."
|
|
121
|
+
|
|
122
|
+
if git push origin "$BRANCH"; then
|
|
123
|
+
echo " ✓ Successfully pushed OTA release to GitHub!"
|
|
124
|
+
else
|
|
125
|
+
echo " ⚠ Git push failed. Please verify write permissions for ${OWNER}/${REPO}."
|
|
126
|
+
fi
|
|
127
|
+
fi
|
|
128
|
+
cd "$ROOT_DIR"
|
|
129
|
+
echo ""
|
|
130
|
+
echo "=== GitHub Sync Complete ==="
|
|
131
|
+
exit 0
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
# ── MinIO Server Integration ──────────────────────────────────────────────────
|
|
135
|
+
echo "Logging in to MinIO Server..."
|
|
46
136
|
LOGIN_RES=$(curl -s -X "POST" "$BASE_URL/public/authen/login" \
|
|
47
137
|
-H 'Content-Type: application/json; charset=utf-8' \
|
|
48
138
|
-d "{\"username\": \"$UPCODE_USER\", \"password\": \"$UPCODE_PASS\"}")
|
|
@@ -54,13 +144,13 @@ TOKEN=$(echo "$LOGIN_RES" | node -e "
|
|
|
54
144
|
} catch(e) { console.log(''); }
|
|
55
145
|
")
|
|
56
146
|
if [[ -z "$TOKEN" ]]; then
|
|
57
|
-
echo "
|
|
58
|
-
|
|
147
|
+
echo " ⚠ Notice: Remote MinIO server login skipped."
|
|
148
|
+
echo " ✓ Bundles & registry generated at: $OUTPUT_DIR"
|
|
149
|
+
echo " Please commit and push local changes to your GitHub storage repository."
|
|
150
|
+
exit 0
|
|
59
151
|
fi
|
|
60
152
|
echo " ✓ Login successful"
|
|
61
153
|
|
|
62
|
-
# ── Helpers ─────────────────────────────────────────────────────────────────
|
|
63
|
-
|
|
64
154
|
remote_delete() {
|
|
65
155
|
local path=$1
|
|
66
156
|
local encoded
|
|
@@ -86,20 +176,17 @@ remote_upload() {
|
|
|
86
176
|
fi
|
|
87
177
|
}
|
|
88
178
|
|
|
89
|
-
# 2. Upload all patch files, full bundles, and asset manifests
|
|
90
179
|
echo "Uploading files for channel: $CHANNEL..."
|
|
91
180
|
FILE_COUNT=0
|
|
92
181
|
for FILE in "$OUTPUT_DIR"/*.{patch,hbc,json}; do
|
|
93
182
|
[[ -f "$FILE" ]] || continue
|
|
94
183
|
FNAME=$(basename "$FILE")
|
|
95
|
-
# Only upload files belonging to the current APP_VERSION
|
|
96
184
|
if [[ "$FNAME" == "patch_"* ]] || [[ "$FNAME" == "bundle_"* ]]; then
|
|
97
185
|
if [[ "$FNAME" != *"_${APP_VERSION}_"* ]]; then
|
|
98
186
|
continue
|
|
99
187
|
fi
|
|
100
188
|
fi
|
|
101
189
|
|
|
102
|
-
# Further general filtering
|
|
103
190
|
if [[ "$FNAME" != *"_${APP_VERSION}_"* ]] && [[ "$FNAME" != *"_${CHANNEL}_"* ]] && [[ "$FNAME" != *"_${PLATFORM}_"* ]] && [[ "$FNAME" != "asset-manifest"* ]] && [[ "$FNAME" != "base-assets"* ]]; then
|
|
104
191
|
continue
|
|
105
192
|
fi
|
|
@@ -110,22 +197,18 @@ for FILE in "$OUTPUT_DIR"/*.{patch,hbc,json}; do
|
|
|
110
197
|
FILE_COUNT=$((FILE_COUNT + 1))
|
|
111
198
|
done
|
|
112
199
|
|
|
113
|
-
# 3. Upload hashed asset store
|
|
114
200
|
if [[ -d "$OUTPUT_DIR/asset-store" ]]; then
|
|
115
201
|
echo "Uploading hashed assets..."
|
|
116
202
|
for FILE in "$OUTPUT_DIR/asset-store"/*; do
|
|
117
203
|
[[ -f "$FILE" ]] || continue
|
|
118
204
|
FNAME=$(basename "$FILE")
|
|
119
|
-
# Assets are global to the base folder (content-addressed)
|
|
120
205
|
REMOTE_PATH="$BASE_FOLDER/assets/$FNAME"
|
|
121
|
-
# Optional: skip if already exists to save time, but for now we re-upload for safety
|
|
122
206
|
remote_upload "$FILE" "$REMOTE_PATH"
|
|
123
207
|
FILE_COUNT=$((FILE_COUNT + 1))
|
|
124
208
|
done
|
|
125
209
|
fi
|
|
126
210
|
echo " ✓ $FILE_COUNT file(s) uploaded (patches + bundles + assets)"
|
|
127
211
|
|
|
128
|
-
# 3. Upload ota_registry.json
|
|
129
212
|
echo "Uploading ota_registry.json..."
|
|
130
213
|
REMOTE_REGISTRY="$BASE_FOLDER/ota_registry.json"
|
|
131
214
|
remote_delete "$REMOTE_REGISTRY"
|
|
@@ -135,4 +218,3 @@ echo " ✓ Registry uploaded"
|
|
|
135
218
|
echo ""
|
|
136
219
|
echo "=== Upload Complete ==="
|
|
137
220
|
echo " Registry : $REMOTE_REGISTRY"
|
|
138
|
-
echo " Patches : $BASE_FOLDER/$APP_VERSION/patch_*.patch ($PATCH_COUNT files)"
|