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( export async function checkPortListening(
effects: Effects, effects: Effects,
port: number, port: number,
{ options: {
error = `Port ${port} is not listening`, errorMessage: string
message = `Port ${port} is available`, successMessage: string
} = {}, timeoutMessage?: string
timeout?: number
},
): Promise<CheckResult> { ): Promise<CheckResult> {
const hasAddress = return Promise.race<CheckResult>([
containsAddress(await effects.runCommand(`cat /proc/net/tcp`), port) || Promise.resolve().then(async () => {
containsAddress(await effects.runCommand("cat /proc/net/udp"), port) const hasAddress =
if (hasAddress) { containsAddress(await effects.runCommand(`cat /proc/net/tcp`), port) ||
return { status: "passing", message } containsAddress(await effects.runCommand("cat /proc/net/udp"), port)
} if (hasAddress) {
return { return { status: "passing", message: options.successMessage }
status: "failing", }
message: error, 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[]] command: ValidIfNoStupidEscape<Command> | [string, ...string[]]
ready: { ready: {
display: null | { display: string | null
name: string
message: string
}
fn: () => Promise<CheckResult> | CheckResult fn: () => Promise<CheckResult> | CheckResult
trigger?: Trigger trigger?: Trigger
} }

View File

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