UNPKG

hosty

Version:

A code based opinionated way to self-host and manage web apps.

66 lines 2.36 kB
import path from 'path'; import * as blocks from '../../blocks/index.js'; export function git(config) { return { ...config, type: 'app.git', get_deploy_tasks: (server) => get_deploy_tasks(server, config), get_destroy_tasks: (server) => get_destroy_tasks(server, config), }; } function get_deploy_tasks(server, config) { config.path || (config.path = '.'); config.instances || (config.instances = 1); const tasks = []; const service_dir = path.join(server.hosty_dir, 'services', config.name); if (config.domain) { tasks.push(blocks.set_available_ports(service_dir, config.instances, 'app_ports')); } tasks.push(blocks.build_repo({ repo_url: config.repo, branch: config.branch, service_dir, image_name: config.name, facts: { source_changed: 'source_changed' }, path: config.path, env: config.env, })); const service = blocks.create_service({ name: config.name, compose: make_composes(config), docker_network: server.docker_network, service_dir, restart_conditions: ['source_changed'], before_start: config.before_start, }); tasks.push(service); if (config.domain) { tasks.push(blocks.create_domain({ domain: config.domain, ports_var: 'app_ports', caddyfile_path: path.join(service_dir, 'Caddyfile') })); } return tasks; } function get_destroy_tasks(server, config) { const tasks = []; const service_dir = path.join(server.hosty_dir, 'services', config.name); tasks.push(blocks.delete_service(service_dir)); tasks.push(blocks.delete_docker_image(config.name)); if (config.domain) { tasks.push(blocks.delete_domain({ domain: config.domain, caddyfile_path: path.join(service_dir, 'Caddyfile') })); } return tasks; } function make_composes(config) { const compose = config.compose || {}; compose.image = config.name; compose.environment = { ...(config.env || {}), ...(compose.environment || {}) }; compose.ports || (compose.ports = []); const composes = []; for (let i = 1; i <= config.instances; i++) { composes.push({ ...compose, ports: [...compose.ports, `{{app_ports[${i - 1}]}}:80`], }); } return composes; } //# sourceMappingURL=git.js.map