From d5c1c69b6b1d1eed811a099167e26f4fb6596587 Mon Sep 17 00:00:00 2001 From: tux-mind <1824153+tux-mind@users.noreply.github.com> Date: Fri, 28 Nov 2025 17:52:46 +0100 Subject: [PATCH] delete leftover directories When stripping XCTests, some `.framework` folders will left empty. Such folders are expected to have a valid framework inside and installing the resultting `.ipa` will result in errors. Make sure that any directory that was empties as a result of our stripping process is also deleted. --- index.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/index.ts b/index.ts index d8cce57..8fd7765 100644 --- a/index.ts +++ b/index.ts @@ -221,9 +221,9 @@ class Applesign { await tools.asyncRimraf(placeholderdir); } - // XXX some directory leftovers async removeXCTests() { fchk(arguments, []); + let dirsToCheck: Set = new Set(); const dir = this.config.appdir; walk.walkSync(dir, (basedir: string, filename: string, stat: any) => { const target = path.join(basedir, filename); @@ -231,8 +231,21 @@ class Applesign { if (target.toLowerCase().indexOf("xctest") !== -1) { this.emit("message", "Deleting " + target); fs.unlinkSync(target); + dirsToCheck.add(basedir); } }); + let removedDirs: Set = new Set(); + do { + removedDirs = new Set(); + for (const d of dirsToCheck) { + if (fs.readdirSync(d).length === 0) { + this.emit('message', 'Deleting ' + d); + fs.rmdirSync(d); + removedDirs.add(d); + } + } + dirsToCheck = new Set([...dirsToCheck].filter((d) => !removedDirs.has(d))); + } while (removedDirs.size > 0); } async removeSigningFiles() {