Skip to content

Commit 7095672

Browse files
committed
fix(ci): remove remaining docker shell clones
1 parent d889d7e commit 7095672

2 files changed

Lines changed: 54 additions & 50 deletions

File tree

packages/app/src/lib/shell/docker-network.ts

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,37 @@ import { Effect } from "effect"
66
import { runCommandCapture, runCommandExitCode, runCommandWithExitCodes } from "./command-runner.js"
77
import { DockerCommandError } from "./errors.js"
88

9+
const dockerSuccessExitCodes = [Number(ExitCode(0))]
10+
11+
const createDockerNetworkError = (exitCode: number): DockerCommandError => new DockerCommandError({ exitCode })
12+
13+
const buildDockerNetworkCommand = (
14+
cwd: string,
15+
args: ReadonlyArray<string>
16+
): { readonly cwd: string; readonly command: string; readonly args: ReadonlyArray<string> } => ({
17+
cwd,
18+
command: "docker",
19+
args
20+
})
21+
922
const runDockerNetworkCommand = (
1023
cwd: string,
1124
args: ReadonlyArray<string>
1225
): Effect.Effect<void, DockerCommandError | PlatformError, CommandExecutor.CommandExecutor> =>
1326
runCommandWithExitCodes(
14-
{
15-
cwd,
16-
command: "docker",
17-
args
18-
},
19-
[Number(ExitCode(0))],
20-
(exitCode) => new DockerCommandError({ exitCode })
27+
buildDockerNetworkCommand(cwd, args),
28+
dockerSuccessExitCodes,
29+
createDockerNetworkError
2130
)
2231

2332
const runDockerNetworkCapture = (
2433
cwd: string,
2534
args: ReadonlyArray<string>
2635
): Effect.Effect<string, DockerCommandError | PlatformError, CommandExecutor.CommandExecutor> =>
2736
runCommandCapture(
28-
{
29-
cwd,
30-
command: "docker",
31-
args
32-
},
33-
[Number(ExitCode(0))],
34-
(exitCode) => new DockerCommandError({ exitCode })
37+
buildDockerNetworkCommand(cwd, args),
38+
dockerSuccessExitCodes,
39+
createDockerNetworkError
3540
)
3641

3742
export const runDockerNetworkConnectBridge = (

packages/app/src/lib/shell/docker-runtime.ts

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,21 @@ export type DockerContainerRuntimeInfo = {
1717
readonly composeService?: string | undefined
1818
}
1919

20+
type DockerInspectReader<A> = (
21+
cwd: string,
22+
containerName: string
23+
) => Effect.Effect<A, DockerCommandError | PlatformError, CommandExecutor.CommandExecutor>
24+
25+
const createDockerInspectReader = <A>(
26+
format: string,
27+
parse: (output: string) => A
28+
): DockerInspectReader<A> =>
29+
(cwd, containerName) =>
30+
pipe(
31+
runDockerInspectValue(cwd, containerName, format),
32+
Effect.map((output) => parse(output))
33+
)
34+
2035
const runDockerInspectValue = (
2136
cwd: string,
2237
containerName: string,
@@ -48,32 +63,24 @@ export const runDockerExecExitCode = (
4863
return Number(exitCode)
4964
})
5065

51-
export const runDockerInspectContainerIp = (
52-
cwd: string,
53-
containerName: string
54-
): Effect.Effect<string, DockerCommandError | PlatformError, CommandExecutor.CommandExecutor> =>
55-
pipe(
56-
runDockerInspectValue(
57-
cwd,
58-
containerName,
59-
String.raw`{{range $k,$v := .NetworkSettings.Networks}}{{printf "%s=%s\n" $k $v.IPAddress}}{{end}}`
60-
),
61-
Effect.map((output) => {
62-
const lines = output
63-
.trim()
64-
.split(/\r?\n/)
65-
.map((line) => line.trim())
66-
.filter((line) => line.length > 0)
66+
export const runDockerInspectContainerIp = createDockerInspectReader(
67+
String.raw`{{range $k,$v := .NetworkSettings.Networks}}{{printf "%s=%s\n" $k $v.IPAddress}}{{end}}`,
68+
(output) => {
69+
const lines = output
70+
.trim()
71+
.split(/\r?\n/)
72+
.map((line) => line.trim())
73+
.filter((line) => line.length > 0)
6774

68-
const entries = lines.flatMap((line) => parseInspectNetworkEntry(line))
69-
if (entries.length === 0) {
70-
return ""
71-
}
75+
const entries = lines.flatMap((line) => parseInspectNetworkEntry(line))
76+
if (entries.length === 0) {
77+
return ""
78+
}
7279

73-
const entryMap = new Map(entries)
74-
return entryMap.get("bridge") ?? entries[0]![1]
75-
})
76-
)
80+
const entryMap = new Map(entries)
81+
return entryMap.get("bridge") ?? entries[0]![1]
82+
}
83+
)
7784

7885
export const runDockerInspectContainerRuntimeInfo = (
7986
cwd: string,
@@ -104,18 +111,10 @@ export const runDockerInspectContainerRuntimeInfo = (
104111
Effect.catchTag("DockerCommandError", () => Effect.succeed(null))
105112
)
106113

107-
export const runDockerInspectContainerBridgeIp = (
108-
cwd: string,
109-
containerName: string
110-
): Effect.Effect<string, DockerCommandError | PlatformError, CommandExecutor.CommandExecutor> =>
111-
pipe(
112-
runDockerInspectValue(
113-
cwd,
114-
containerName,
115-
"{{with (index .NetworkSettings.Networks \"bridge\")}}{{.IPAddress}}{{end}}"
116-
),
117-
Effect.map((output) => output.trim())
118-
)
114+
export const runDockerInspectContainerBridgeIp = createDockerInspectReader(
115+
"{{with (index .NetworkSettings.Networks \"bridge\")}}{{.IPAddress}}{{end}}",
116+
(output) => output.trim()
117+
)
119118

120119
export const runDockerPsNames = (
121120
cwd: string

0 commit comments

Comments
 (0)