Skip to content

Commit ec269dd

Browse files
committed
feat: remove freeport
1 parent c51fe64 commit ec269dd

File tree

9 files changed

+25
-517
lines changed

9 files changed

+25
-517
lines changed

pkg/clientnpm/clientnpm.go

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"io"
7+
"net"
78
"os"
89
"os/exec"
910
"os/signal"
@@ -15,7 +16,6 @@ import (
1516

1617
"github.com/foomo/webgrapple/pkg/clientconfig"
1718
"github.com/foomo/webgrapple/pkg/server"
18-
"github.com/foomo/webgrapple/pkg/utils/freeport"
1919
"github.com/foomo/webgrapple/pkg/vo"
2020
)
2121

@@ -71,20 +71,20 @@ func Run(
7171
// get some ports
7272
port := flagPort
7373
if port == 0 {
74-
ports, errTakePort := freeport.Take(1)
74+
ports, errTakePort := freeport()
7575
if errTakePort != nil {
7676
return errorWrap(errTakePort, "could not find a free port")
7777
}
78-
port = ports[0]
78+
port = ports
7979
}
8080

8181
var debugPort int
8282
if flagDebugServerPort == 0 && flagStartVSCode {
83-
debugPorts, errTakeDebugPort := freeport.Take(1)
83+
debugPorts, errTakeDebugPort := freeport()
8484
if errTakeDebugPort != nil {
8585
return errorWrap(errTakeDebugPort, "could not find a free debug port")
8686
}
87-
debugPort = debugPorts[0]
87+
debugPort = debugPorts
8888
} else {
8989
debugPort = flagDebugServerPort
9090
}
@@ -177,6 +177,26 @@ func Run(
177177
return nil
178178
}
179179

180+
// freeport asks the kernel for a free open port that is ready to use.
181+
func freeport() (int, error) {
182+
a, err := net.ResolveTCPAddr("tcp", "localhost:0")
183+
if err != nil {
184+
return 0, err
185+
}
186+
187+
l, err := net.ListenTCP("tcp", a)
188+
if err != nil {
189+
return 0, err
190+
}
191+
defer l.Close()
192+
193+
addr, ok := l.Addr().(*net.TCPAddr)
194+
if !ok {
195+
return 0, errors.New("could not resolve local address")
196+
}
197+
return addr.Port, nil
198+
}
199+
180200
func removeServices(ctx context.Context, l log.Logger, address string, config vo.ClientConfig) {
181201
client := server.NewServiceGoTSRPCClient(address, server.DefaultEndPoint)
182202
var serviceIDs []vo.ServiceID

pkg/utils/freeport/ephemeral_darwin.go

Lines changed: 0 additions & 46 deletions
This file was deleted.

pkg/utils/freeport/ephemeral_darwin_test.go

Lines changed: 0 additions & 18 deletions
This file was deleted.

pkg/utils/freeport/ephemeral_freebsd.go

Lines changed: 0 additions & 46 deletions
This file was deleted.

pkg/utils/freeport/ephemeral_linux.go

Lines changed: 0 additions & 41 deletions
This file was deleted.

pkg/utils/freeport/ephemeral_linux_test.go

Lines changed: 0 additions & 18 deletions
This file was deleted.

pkg/utils/freeport/ephemeral_windows.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)