@@ -2,8 +2,12 @@ require('ts-node/register');
2
2
3
3
const { promisify } = require ( 'util' ) ;
4
4
const path = require ( 'path' ) ;
5
+ const os = require ( 'os' ) ;
5
6
const fs = require ( 'fs' ) ;
7
+ const rimraf = require ( 'rimraf' ) ;
6
8
9
+ const canAccess = ( file ) => promisify ( fs . access ) ( file ) . then ( ( ) => true ) . catch ( ( ) => false ) ;
10
+ const deleteDir = promisify ( rimraf ) ;
7
11
const mkdir = promisify ( fs . mkdir ) ;
8
12
const writeFile = promisify ( fs . writeFile ) ;
9
13
const chmod = promisify ( fs . chmod ) ;
@@ -16,10 +20,15 @@ setInterval(() => {}, 999999999);
16
20
// This lets us edit both and the desktop together. We do this by creating a fake server,
17
21
// which doesn't exit, but otherwise does nothing.
18
22
async function setUpDevEnv ( ) {
19
- const serverBinFolder = path . join ( __dirname , 'httptoolkit-server' , 'bin ') ;
20
- await mkdir ( serverBinFolder , { recursive : true } ) ;
23
+ const serverFolder = path . join ( __dirname , 'httptoolkit-server' ) ;
24
+ const serverExists = await canAccess ( serverFolder ) ;
21
25
22
- const bins = [ 'httptoolkit-server' , 'httptoolkit-server.cmd' ] . map ( ( bin ) => path . join ( serverBinFolder , bin ) ) ;
26
+ if ( serverExists ) await deleteDir ( serverFolder ) ;
27
+
28
+ const binFolder = path . join ( serverFolder , 'bin' ) ;
29
+ await mkdir ( binFolder , { recursive : true } ) ;
30
+
31
+ const bins = [ 'httptoolkit-server' , 'httptoolkit-server.cmd' ] . map ( ( bin ) => path . join ( binFolder , bin ) ) ;
23
32
await Promise . all ( bins . map ( async ( bin ) => {
24
33
await writeFile ( bin , sleepForeverScript ) ;
25
34
await chmod ( bin , 0o755 ) ;
0 commit comments