Skip to content

Commit 826835e

Browse files
committed
Drop rimraf dep from start entrypoint to avoid bundle issues
Could've just unbundled rimraf instead so we can read it from the non-bundle command entrypoints like this, but it's very easy to reimplement ourselves, so let's just do that.
1 parent cc22661 commit 826835e

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

src/commands/start.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ type IndexTypeModule = typeof import('../index');
55
import * as path from 'path';
66
import { promises as fs } from 'fs'
77
import * as semver from 'semver';
8-
import * as rimraf from 'rimraf';
98

109
import { IS_PROD_BUILD } from '../constants';
1110

@@ -99,9 +98,7 @@ class HttpToolkitServer extends Command {
9998
// a new server standalone (not just from an update), because otherwise the
10099
// update dir can end up in a broken state. Better to clear it completely.
101100
console.log("Downloaded server directory is entirely outdated, deleting it");
102-
rimraf(serverUpdatesPath, (error) => {
103-
if (error) reportError(error);
104-
});
101+
deleteFolder(serverUpdatesPath).catch(reportError);
105102
} else {
106103
// Some of the servers are outdated, but not all (maybe it includes us).
107104
// Async delete all server versions older than this currently running version.
@@ -110,13 +107,32 @@ class HttpToolkitServer extends Command {
110107

111108
if (version && semver.lt(version, currentVersion)) {
112109
console.log(`Deleting old server ${filename}`);
113-
rimraf(path.join(serverUpdatesPath, filename), (error) => {
114-
if (error) reportError(error);
115-
});
110+
deleteFolder(path.join(serverUpdatesPath, filename)).catch(reportError);
116111
}
117112
});
118113
}
119114
}
120115
}
121116

117+
async function deleteFolder(folder: string) {
118+
const contents: string[] = await fs.readdir(folder)
119+
.catch((e) => {
120+
if (e.code === 'ENOENT') return [];
121+
else throw e;
122+
});
123+
124+
await Promise.all(
125+
contents.map(async (filename) => {
126+
const filePath = path.join(folder, filename);
127+
if ((await fs.lstat(filePath)).isDirectory()) {
128+
await deleteFolder(filePath);
129+
} else {
130+
await fs.unlink(filePath);
131+
}
132+
})
133+
);
134+
135+
await fs.rmdir(folder);
136+
};
137+
122138
export = HttpToolkitServer;

0 commit comments

Comments
 (0)