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)) }