mirror of
https://github.com/actions/runner-container-hooks.git
synced 2025-12-16 17:56:44 +00:00
There might be situation where reading from standard input fails. In that case, we should encapsulate that exception within the try catch block to avoid unhandeled Promise rejection exception and provide more information about the error
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import * as core from '@actions/core'
|
|
import {
|
|
Command,
|
|
getInputFromStdin,
|
|
PrepareJobArgs,
|
|
RunContainerStepArgs,
|
|
RunScriptStepArgs
|
|
} from 'hooklib/lib'
|
|
import { exit } from 'process'
|
|
import {
|
|
cleanupJob,
|
|
prepareJob,
|
|
runContainerStep,
|
|
runScriptStep
|
|
} from './hooks'
|
|
import { checkEnvironment } from './utils'
|
|
|
|
async function run(): Promise<void> {
|
|
try {
|
|
checkEnvironment()
|
|
const input = await getInputFromStdin()
|
|
|
|
const args = input['args']
|
|
const command = input['command']
|
|
const responseFile = input['responseFile']
|
|
const state = input['state']
|
|
switch (command) {
|
|
case Command.PrepareJob:
|
|
await prepareJob(args as PrepareJobArgs, responseFile)
|
|
return exit(0)
|
|
case Command.CleanupJob:
|
|
await cleanupJob()
|
|
return exit(0)
|
|
case Command.RunScriptStep:
|
|
await runScriptStep(args as RunScriptStepArgs, state)
|
|
return exit(0)
|
|
case Command.RunContainerStep:
|
|
await runContainerStep(args as RunContainerStepArgs, state)
|
|
return exit(0)
|
|
default:
|
|
throw new Error(`Command not recognized: ${command}`)
|
|
}
|
|
} catch (error) {
|
|
core.error(`${error}`)
|
|
exit(1)
|
|
}
|
|
}
|
|
|
|
void run()
|