const { spawn } = require("child_process"); const path = require('path'); const app = process.argv[2]; const command = process.argv[3]; const files = { all: ["zammad", "postgresql", "bridge", "opensearch", "leafcutter", "link", "signal-cli-rest-api"], linkDev: ["zammad", "postgresql", "opensearch"], link: ["zammad", "postgresql", "opensearch", "link"], linkOnly: ["link"], leafcutterDev: ["opensearch"], leafcutter: ["opensearch", "leafcutter"], opensearch: ["opensearch"], bridgeDev: ["zammad", "postgresql", "signal-cli-rest-api"], bridge: ["zammad", "postgresql", "bridge", "signal-cli-rest-api"], zammad: ["zammad", "postgresql", "opensearch"], }; const envFile = path.resolve(process.cwd(), '.env'); const finalFiles = files[app] .map((file) => ['-f', `docker/compose/${file}.yml`]).flat(); // Add bridge-dev.yml for dev commands that include zammad const devAppsWithZammad = ['linkDev', 'bridgeDev', 'all']; if (devAppsWithZammad.includes(app) && files[app].includes('zammad')) { finalFiles.push('-f', 'docker-compose.bridge-dev.yml'); } const finalCommand = command === "up" ? ["up", "-d", "--remove-orphans"] : [command]; const dockerCompose = spawn('docker', ['compose', '--env-file', envFile, ...finalFiles, ...finalCommand]); dockerCompose.stdout.on('data', (data) => { console.info(`${data}`); }); dockerCompose.stderr.on('data', (data) => { console.info(`${data}`); });