battlelog/createMissingContainers.ts

36 lines
1.1 KiB
TypeScript

import {parse, stringify} from 'yaml';
for await (const service of Deno.readDir('.')) {
if (service.isFile || !service.name.includes('-service')) continue;
const serviceFile = './' + service.name + '/';
const serviceName = service.name.replace('-service', '');
const port = await Deno.readTextFile(serviceFile + 'port');
const perms = (await Deno.readTextFile(serviceFile + 'perms')).split('\n');
await Deno.writeTextFile(serviceFile + 'Dockerfile', `
FROM denoland/deno:1.33.2
${port ? 'EXPOSE ' + port : ''}
WORKDIR /${serviceName}
ADD ${serviceFile} .
COPY ./deno.jsonc .
COPY ./secrets.json .
COPY ./key.txt .
ADD ./common ./common
ADD ./lib ./lib
ADD ./middleware ./middleware
CMD ["run", "${perms.join('", "')}", "main.ts"${port ? `, "${port}"` : ''}]
`);
const dockerCompose: any = parse(await Deno.readTextFile('./docker-compose.yml'));
dockerCompose['services'][serviceName] = {
build: {
context: "./",
dockerfile: serviceFile + 'Dockerfile'
}
}
await Deno.writeTextFile('./docker-compose.yml', stringify(dockerCompose))
}