Skip to content

Commit f7b013d

Browse files
fix: rm command (#1623)
1 parent e269ba1 commit f7b013d

File tree

7 files changed

+79
-15
lines changed

7 files changed

+79
-15
lines changed

package-lock.json

Lines changed: 1 addition & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,10 @@
3434
},
3535
"cordova-plugin-websocket": {},
3636
"cordova-plugin-buildinfo": {},
37-
"cordova-plugin-system": {},
3837
"cordova-plugin-browser": {},
39-
"com.foxdebug.acode.rk.exec.terminal": {},
40-
"com.foxdebug.acode.rk.exec.proot": {},
41-
"cordova-plugin-sftp": {}
38+
"cordova-plugin-sftp": {},
39+
"cordova-plugin-system": {},
40+
"com.foxdebug.acode.rk.exec.terminal": {}
4241
},
4342
"platforms": [
4443
"android"
@@ -63,7 +62,6 @@
6362
"@types/url-parse": "^1.4.11",
6463
"autoprefixer": "^10.4.21",
6564
"babel-loader": "^10.0.0",
66-
"com.foxdebug.acode.rk.exec.proot": "file:src/plugins/proot",
6765
"com.foxdebug.acode.rk.exec.terminal": "file:src/plugins/terminal",
6866
"cordova-android": "^14.0.1",
6967
"cordova-clipboard": "^1.3.0",

src/plugins/system/android/com/foxdebug/system/System.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,26 @@ public void run() {
315315

316316
return true;
317317
case "mkdirs":
318-
File file = new File(args.getString(0));
319-
if (file.mkdirs()) {
318+
if (new File(args.getString(0)).mkdirs()) {
320319
callbackContext.success();
321320
} else {
322321
callbackContext.error("mkdirs failed");
323322
}
323+
return true;
324+
case "deleteFile":
325+
if (new File(args.getString(0)).delete()) {
326+
callbackContext.success();
327+
} else {
328+
callbackContext.error("delete failed");
329+
}
330+
return true;
331+
case "setExec":
332+
if (new File(args.getString(0)).setExecutable(Boolean.parseBoolean(args.getString(1)))) {
333+
callbackContext.success();
334+
} else {
335+
callbackContext.error("set exec faild");
336+
}
337+
324338
return true;
325339
default:
326340
return false;

src/plugins/system/www/plugin.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ module.exports = {
2121
writeText: function (path, content, success, error) {
2222
cordova.exec(success, error, 'System', 'writeText', [path, content]);
2323
},
24+
deleteFile: function (path, success, error) {
25+
cordova.exec(success, error, 'System', 'deleteFile', [path]);
26+
},
27+
setExec: function (path, executable, success, error) {
28+
cordova.exec(success, error, 'System', 'setExec', [path, String(executable)]);
29+
},
30+
2431

2532
getNativeLibraryPath: function (success, error) {
2633
cordova.exec(success, error, 'System', 'getNativeLibraryPath', []);

src/plugins/terminal/plugin.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626

2727
<source-file src="scripts/init-sandbox.sh" target-dir="assets"/>
2828
<source-file src="scripts/init-alpine.sh" target-dir="assets"/>
29+
<source-file src="scripts/rm-wrapper.sh" target-dir="assets"/>
2930

30-
<config-file target="AndroidManifest.xml" parent="/manifest"></config-file>
3131

3232
<config-file target="AndroidManifest.xml" parent="./application">
3333
<provider
@@ -57,6 +57,9 @@
5757
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
5858
</config-file>
5959

60-
60+
61+
<!-- DO NOT EDIT OR REMOVE-->
62+
<config-file target="AndroidManifest.xml" parent="/manifest"></config-file>
63+
6164
</platform>
6265
</plugin>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/sh
2+
3+
unlink_recursive() {
4+
path="$1"
5+
6+
# Try to recurse into it as a directory first
7+
for entry in "$path"/* "$path"/.[!.]* "$path"/..?*; do
8+
case "$entry" in
9+
*'*'*|*'?'*) continue ;;
10+
esac
11+
unlink_recursive "$entry"
12+
done 2>/dev/null
13+
14+
# Then try to remove the path itself
15+
if rmdir "$path" 2>/dev/null; then
16+
:
17+
elif unlink "$path" 2>/dev/null; then
18+
:
19+
else
20+
:
21+
fi
22+
}
23+
24+
for target in "$@"; do
25+
echo "Unlinking broken symlinks..."
26+
unlink_recursive "$target"
27+
done
28+
29+
busybox rm "$@"

src/plugins/terminal/www/Terminal.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ const Terminal = {
1919
system.writeText(`${filesDir}/init-alpine.sh`, content, logger, err_logger);
2020
});
2121

22+
readAsset("rm-wrapper.sh", async (content) => {
23+
system.deleteFile(`${filesDir}/alpine/bin/rm`, logger, err_logger);
24+
system.writeText(`${filesDir}/alpine/bin/rm`, content, logger, err_logger);
25+
system.setExec(`${filesDir}/alpine/bin/rm`, true, logger, err_logger);
26+
});
27+
2228
readAsset("init-sandbox.sh", (content) => {
2329
system.writeText(`${filesDir}/init-sandbox.sh`, content, logger, err_logger);
2430

@@ -38,6 +44,12 @@ const Terminal = {
3844
});
3945
});
4046
} else {
47+
readAsset("rm-wrapper.sh", async (content) => {
48+
system.deleteFile(`${filesDir}/alpine/bin/rm`, logger, err_logger);
49+
system.writeText(`${filesDir}/alpine/bin/rm`, content, logger, err_logger);
50+
system.setExec(`${filesDir}/alpine/bin/rm`, true, logger, err_logger);
51+
});
52+
4153
readAsset("init-alpine.sh", async (content) => {
4254
system.writeText(`${filesDir}/init-alpine.sh`, content, logger, err_logger);
4355
});
@@ -222,6 +234,12 @@ const Terminal = {
222234
logger("⚙️ Applying basic configuration...");
223235
system.writeText(`${alpineDir}/etc/resolv.conf`, `nameserver 8.8.4.4 \nnameserver 8.8.8.8`);
224236

237+
readAsset("rm-wrapper.sh", async (content) => {
238+
system.deleteFile(`${alpineDir}/bin/rm`, logger, err_logger);
239+
system.writeText(`${alpineDir}/bin/rm`, content, logger, err_logger);
240+
system.setExec(`${alpineDir}/bin/rm`, true, logger, err_logger);
241+
});
242+
225243
logger("✅ Extraction complete");
226244
await new Promise((resolve, reject) => {
227245
system.mkdirs(`${filesDir}/.extracted`, resolve, reject);

0 commit comments

Comments
 (0)