diff --git a/hooks/post-process.js b/hooks/post-process.js index 5f03530fe..9ff9e7866 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,13 +70,16 @@ 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(); if (fdroid == "true") { api = "28"; } + } else { + console.error(`${getTmpDir()}/fdroid.bool not found`); + process.exit(1); } content = content.replace(sdkRegex, 'targetSdkVersion ' + api); 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