import { createDirectories, getServiceFromDB, getServiceImage, getServiceMainPort, isDev, makeLabelForServices } from "./common"; import fs from 'fs/promises'; export async function getTemplates() { let templates: any = []; if (isDev) { templates = JSON.parse(await (await fs.readFile('./template.json')).toString()) } else { templates = JSON.parse(await (await fs.readFile('/app/template.json')).toString()) } // if (!isDev) { // templates.push({ // "templateVersion": "1.0.0", // "defaultVersion": "latest", // "name": "Test-Fake-Service", // "description": "", // "services": { // "$$id": { // "name": "Test-Fake-Service", // "depends_on": [ // "$$id-postgresql", // "$$id-redis" // ], // "image": "weblate/weblate:$$core_version", // "volumes": [ // "$$id-data:/app/data", // ], // "environment": [ // `POSTGRES_SECRET=$$secret_postgres_secret`, // `WEBLATE_SITE_DOMAIN=$$config_weblate_site_domain`, // `WEBLATE_ADMIN_PASSWORD=$$secret_weblate_admin_password`, // `POSTGRES_PASSWORD=$$secret_postgres_password`, // `POSTGRES_USER=$$config_postgres_user`, // `POSTGRES_DATABASE=$$config_postgres_db`, // `POSTGRES_HOST=$$id-postgresql`, // `POSTGRES_PORT=5432`, // `REDIS_HOST=$$id-redis`, // ], // "ports": [ // "8080" // ] // }, // "$$id-postgresql": { // "name": "PostgreSQL", // "depends_on": [], // "image": "postgres:14-alpine", // "volumes": [ // "$$id-postgresql-data:/var/lib/postgresql/data", // ], // "environment": [ // "POSTGRES_USER=$$config_postgres_user", // "POSTGRES_PASSWORD=$$secret_postgres_password", // "POSTGRES_DB=$$config_postgres_db", // ], // "ports": [] // }, // "$$id-redis": { // "name": "Redis", // "depends_on": [], // "image": "redis:7-alpine", // "volumes": [ // "$$id-redis-data:/data", // ], // "environment": [], // "ports": [], // } // }, // "variables": [ // { // "id": "$$config_weblate_site_domain", // "main": "$$id", // "name": "WEBLATE_SITE_DOMAIN", // "label": "Weblate Domain", // "defaultValue": "$$generate_domain", // "description": "", // }, // { // "id": "$$secret_weblate_admin_password", // "main": "$$id", // "name": "WEBLATE_ADMIN_PASSWORD", // "label": "Weblate Admin Password", // "defaultValue": "$$generate_password", // "description": "", // "extras": { // "isVisibleOnUI": true, // } // }, // { // "id": "$$secret_weblate_admin_password2", // "name": "WEBLATE_ADMIN_PASSWORD2", // "label": "Weblate Admin Password2", // "defaultValue": "$$generate_password", // "description": "", // }, // { // "id": "$$config_postgres_user", // "main": "$$id-postgresql", // "name": "POSTGRES_USER", // "label": "PostgreSQL User", // "defaultValue": "$$generate_username", // "description": "", // }, // { // "id": "$$secret_postgres_password", // "main": "$$id-postgresql", // "name": "POSTGRES_PASSWORD", // "label": "PostgreSQL Password", // "defaultValue": "$$generate_password(32)", // "description": "", // }, // { // "id": "$$secret_postgres_password_hex32", // "name": "POSTGRES_PASSWORD_hex32", // "label": "PostgreSQL Password hex32", // "defaultValue": "$$generate_hex(32)", // "description": "", // }, // { // "id": "$$config_postgres_something_hex32", // "name": "POSTGRES_SOMETHING_HEX32", // "label": "PostgreSQL Something hex32", // "defaultValue": "$$generate_hex(32)", // "description": "", // }, // { // "id": "$$config_postgres_db", // "main": "$$id-postgresql", // "name": "POSTGRES_DB", // "label": "PostgreSQL Database", // "defaultValue": "weblate", // "description": "", // }, // { // "id": "$$secret_postgres_secret", // "name": "POSTGRES_SECRET", // "label": "PostgreSQL Secret", // "defaultValue": "", // "description": "", // }, // ] // }) // } return templates } export async function defaultServiceConfigurations({ id, teamId }) { const service = await getServiceFromDB({ id, teamId }); const { destinationDockerId, destinationDocker, type, serviceSecret } = service; const network = destinationDockerId && destinationDocker.network; const port = getServiceMainPort(type); const { workdir } = await createDirectories({ repository: type, buildId: id }); const image = getServiceImage(type); let secrets = []; if (serviceSecret.length > 0) { serviceSecret.forEach((secret) => { secrets.push(`${secret.name}=${secret.value}`); }); } return { ...service, network, port, workdir, image, secrets } }