INNER CODE UNIT · TypeScript

cmdUp

PerryTS/perry · example-code/forgejo-deployment/main.ts:345

async function cmdUp(c: StackConfig): Promise<void> {
  await preflightOrExit(c.httpPort, c.sshPort);

  console.log(`🚀 Deploying Forgejo ${c.version} (data.forgejo.org/forgejo/forgejo:${c.version})`);
  console.log(`   • Web    ${c.protocol}://${c.domain}:${c.httpPort}`);
  console.log(`   • SSH    ssh://git@${c.domain}:${c.sshPort}`);
  console.log(`   • DB     postgres:${c.pgVersion}  (user=${c.dbUser}, db=${c.dbName})`);

  // `up()` is idempotent: re-running this script while the stack is
  // already running is a no-op (Perry's compose engine inspects each
  // service and skips when status is "running"; if the container exists
  // but is stopped, it `start`s it).
  const stack = await up(buildSpec(c) as never);
  console.log(`✅ Stack started (handle ${String(stack)})`);

  console.log('\n🏥 Waiting for PostgreSQL to accept connections (≤60s)...');
  if (!await waitForPostgres(stack, 60_000)) {
    console.error('❌ PostgreSQL never became ready. Tearing down.');

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…