Skip to content

Commit

Permalink
feat(ports): check if port is already in use
Browse files Browse the repository at this point in the history
  • Loading branch information
HeikoMamerow committed Apr 14, 2023
1 parent fae1d9a commit 03d1c3a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
10 changes: 10 additions & 0 deletions bin/cli.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion bin/cli.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 16 additions & 3 deletions src/cli.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
#!/usr/bin/env node

import fs from 'fs';
import net from 'net';

const server = net.createServer();
const port = getPortnumber();
const testsPort = port + 1;
const objPorts: { [index: string]: number } = {'port': port, 'testsPort': testsPort}
const wpEnvJson = '.wp-env.json';
let wpEnvJsonData: { [index: string]: number }


/**
* Check if ".wp-env.json" exist.
*/
Expand All @@ -18,7 +22,7 @@ if (fs.existsSync(wpEnvJson)) {
});
} else {
// No wp-env.json exist.
wpEnvJsonData = objPorts;
wpEnvJsonData = objPorts
}

/**
Expand All @@ -35,9 +39,9 @@ fs.writeFileSync(wpEnvJson, JSON.stringify(wpEnvJsonData, null, 2))
function getPortnumber() {
// Build port numbers from timestamp.
const maxNumber = 65535
let portnumber = parseInt(Date.now().toString().slice(-5));
let portnumber = parseInt(Date.now().toString().slice(-5))
if (portnumber >= maxNumber) {
portnumber = parseInt(portnumber.toString().slice(-4));
portnumber = parseInt(portnumber.toString().slice(-4))
}

// Prevent unwanted ports.
Expand All @@ -46,5 +50,14 @@ function getPortnumber() {
getPortnumber()
}

// Check if the port is already in use.
server.on('error', (err: NodeJS.ErrnoException) => {
if (err.code === 'EADDRINUSE') {
server.close()
getPortnumber()
}
});
server.listen(portnumber, 'localhost')

return portnumber
}

0 comments on commit 03d1c3a

Please sign in to comment.