1
1
mirror of https://github.com/theoludwig/programming-challenges.git synced 2024-12-08 00:45:29 +01:00
programming-challenges/cli/services/Docker.ts

34 lines
758 B
TypeScript
Raw Normal View History

import execa from 'execa'
import ora from 'ora'
class Docker {
static CONTAINER_TAG = 'programming-challenges'
public async build (): Promise<void> {
const loader = ora('Building the Docker image').start()
try {
await execa.command(`docker build --tag=${Docker.CONTAINER_TAG} ./`)
loader.stop()
} catch (error) {
loader.fail()
throw error
}
}
public async run (input: string): Promise<string> {
const subprocess = execa.command(
`docker run --interactive --rm ${Docker.CONTAINER_TAG}`,
{
input
}
)
const { stdout, stderr } = await subprocess
if (stderr.length !== 0) {
throw new Error(stderr)
}
return stdout
}
}
export const docker = new Docker()