From f1a815e39d0107ee995379dc9eec402381f6105c Mon Sep 17 00:00:00 2001 From: RohitKushvaha01 Date: Fri, 29 Aug 2025 12:18:44 +0530 Subject: [PATCH 1/2] feat: use non-postional build arguments --- hooks/post-process.js | 23 +++++++++++++++++- package-lock.json | 7 +----- package.json | 2 -- utils/scripts/build.sh | 53 ++++++++++++++++++++++++++++-------------- 4 files changed, 58 insertions(+), 27 deletions(-) diff --git a/hooks/post-process.js b/hooks/post-process.js index 5f03530fe..14244009c 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -34,6 +34,27 @@ enableStaticContext(); patchTargetSdkVersion(); +function getTmpDir() { + const tmpdirEnv = process.env.TMPDIR; + + if (tmpdirEnv) { + try { + fs.accessSync(tmpdirEnv, fs.constants.R_OK | fs.constants.W_OK); + return tmpdirEnv; + } catch { + // TMPDIR exists but not accessible + } + } + + try { + fs.accessSync("/tmp", fs.constants.R_OK | fs.constants.W_OK); + return "/tmp"; + } catch { + console.error("Error: No usable temporary directory found (TMPDIR or /tmp not accessible)."); + process.exit(1); + } +} + function patchTargetSdkVersion() { const prefix = execSync('npm prefix').toString().trim(); const gradleFile = path.join(prefix, 'platforms/android/app/build.gradle'); @@ -49,7 +70,7 @@ function patchTargetSdkVersion() { if (sdkRegex.test(content)) { let api = "35"; - const froidFlag = path.join(prefix, 'fdroid.bool'); + const froidFlag = path.join(getTmpDir(), 'fdroid.bool'); if (fs.existsSync(froidFlag)) { const fdroid = fs.readFileSync(froidFlag, 'utf-8').trim(); diff --git a/package-lock.json b/package-lock.json index 327a04593..8ac3cf657 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,7 +54,6 @@ "@types/url-parse": "^1.4.11", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", - "com.foxdebug.acode.rk.exec.proot": "file:src/plugins/proot", "com.foxdebug.acode.rk.exec.terminal": "file:src/plugins/terminal", "cordova-android": "^14.0.1", "cordova-clipboard": "^1.3.0", @@ -4335,10 +4334,6 @@ "dev": true, "license": "MIT" }, - "node_modules/com.foxdebug.acode.rk.exec.proot": { - "resolved": "src/plugins/proot", - "link": true - }, "node_modules/com.foxdebug.acode.rk.exec.terminal": { "resolved": "src/plugins/terminal", "link": true @@ -11207,7 +11202,7 @@ "src/plugins/proot": { "name": "com.foxdebug.acode.rk.exec.proot", "version": "1.0.0", - "dev": true, + "extraneous": true, "license": "MIT" }, "src/plugins/sdcard": { diff --git a/package.json b/package.json index c697af747..978ed6c6f 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "cordova-plugin-websocket": {}, "cordova-plugin-buildinfo": {}, "com.foxdebug.acode.rk.exec.terminal": {}, - "com.foxdebug.acode.rk.exec.proot": {}, "cordova-plugin-browser": {}, "cordova-plugin-system": {} }, @@ -63,7 +62,6 @@ "@types/url-parse": "^1.4.11", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", - "com.foxdebug.acode.rk.exec.proot": "file:src/plugins/proot", "com.foxdebug.acode.rk.exec.terminal": "file:src/plugins/terminal", "cordova-android": "^14.0.1", "cordova-clipboard": "^1.3.0", diff --git a/utils/scripts/build.sh b/utils/scripts/build.sh index f83560899..b3722f5d2 100644 --- a/utils/scripts/build.sh +++ b/utils/scripts/build.sh @@ -1,33 +1,50 @@ -#! /bin/bash +#!/bin/bash -app="$1" -mode="$2" -fdroidFlag="$3" +# Default values +app="paid" +mode="d" +fdroidFlag="" webpackmode="development" cordovamode="" +# Check all arguments for specific values +for arg in "$@"; do + case "$arg" in + "free"|"paid") + app="$arg" + ;; + "p"|"prod"|"d"|"dev") + mode="$arg" + ;; + "fdroid") + fdroidFlag="fdroid" + ;; + *) + echo "Warning: Unknown argument '$arg' ignored" + ;; + esac +done + root=$(npm prefix) +if [ -n "$TMPDIR" ] && [ -r "$TMPDIR" ] && [ -w "$TMPDIR" ]; then + tmpdir="$TMPDIR" +elif [ -r "/tmp" ] && [ -w "/tmp" ]; then + tmpdir="/tmp" +else + echo "Error: No usable temporary directory found (TMPDIR or /tmp not accessible)." >&2 + exit 1 +fi if [[ "$fdroidFlag" == "fdroid" ]]; then - echo "true" > "$root/fdroid.bool" + echo "true" > "$tmpdir/fdroid.bool" cordova plugin remove com.foxdebug.acode.rk.exec.proot - else - echo "false" > "$root/fdroid.bool" + echo "false" > "$tmpdir/fdroid.bool" cordova plugin add src/plugins/proot/ fi -if [ -z "$mode" ] -then -mode="d" -fi - -if [ -z "$app" ] -then -app="paid" -fi - +# Normalize mode values if [ "$mode" = "p" ] || [ "$mode" = "prod" ] then mode="p" @@ -50,4 +67,4 @@ $script2&& # $script3; echo \"${RED}$script4${NC}\"; $script4; -" +" \ No newline at end of file From 31e5277a2e7fd8fe1a60d2bc51c0cbc9da752547 Mon Sep 17 00:00:00 2001 From: RohitKushvaha01 Date: Fri, 29 Aug 2025 12:31:23 +0530 Subject: [PATCH 2/2] fix: cancel build if fdroid.bool file not found --- hooks/post-process.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hooks/post-process.js b/hooks/post-process.js index 14244009c..9ff9e7866 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -77,6 +77,9 @@ function patchTargetSdkVersion() { if (fdroid == "true") { api = "28"; } + } else { + console.error(`${getTmpDir()}/fdroid.bool not found`); + process.exit(1); } content = content.replace(sdkRegex, 'targetSdkVersion ' + api);