feat: Add in more options in the adding of a daemon

This commit is contained in:
BluJ
2023-04-27 11:56:39 -06:00
parent c1226cf2b4
commit 07ecc59611
3 changed files with 37 additions and 21 deletions

View File

@@ -19,19 +19,36 @@ export function containsAddress(x: string, port: number) {
export async function checkPortListening(
effects: Effects,
port: number,
{
error = `Port ${port} is not listening`,
message = `Port ${port} is available`,
} = {},
options: {
errorMessage: string
successMessage: string
timeoutMessage?: string
timeout?: number
},
): Promise<CheckResult> {
const hasAddress =
containsAddress(await effects.runCommand(`cat /proc/net/tcp`), port) ||
containsAddress(await effects.runCommand("cat /proc/net/udp"), port)
if (hasAddress) {
return { status: "passing", message }
}
return {
status: "failing",
message: error,
}
return Promise.race<CheckResult>([
Promise.resolve().then(async () => {
const hasAddress =
containsAddress(await effects.runCommand(`cat /proc/net/tcp`), port) ||
containsAddress(await effects.runCommand("cat /proc/net/udp"), port)
if (hasAddress) {
return { status: "passing", message: options.successMessage }
}
return {
status: "failing",
message: options.errorMessage,
}
}),
new Promise((resolve) => {
setTimeout(
() =>
resolve({
status: "failing",
message:
options.timeoutMessage || `Timeout trying to check port ${port}`,
}),
options.timeout ?? 1_000,
)
}),
])
}

View File

@@ -13,10 +13,7 @@ type Daemon<
command: ValidIfNoStupidEscape<Command> | [string, ...string[]]
ready: {
display: null | {
name: string
message: string
}
display: string | null
fn: () => Promise<CheckResult> | CheckResult
trigger?: Trigger
}

View File

@@ -73,9 +73,11 @@ export type Utils<WD> = {
) => Promise<void>
checkPortListening(
port: number,
options?: {
error?: string
message?: string
options: {
errorMessage: string
successMessage: string
timeoutMessage?: string
timeout?: number
},
): Promise<CheckResult>
checkWebUrl(