#!/usr/bin/env node

/**
 * Script to run Tauri dev server with dynamic port configuration.
 * Loads port from .env.local if present, otherwise uses default port 1420.
 */

import { spawnSync } from 'child_process';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

const __dirname = path.dirname(fileURLToPath(import.meta.url));
const rootDir = path.join(__dirname, '..');

// Load .env.local if it exists
const envLocalPath = path.join(rootDir, '.env.local');
if (fs.existsSync(envLocalPath)) {
  const envContent = fs.readFileSync(envLocalPath, 'utf8');
  const envVars = envContent
    .split('\n')
    .filter(line => line && !line.startsWith('#'))
    .reduce((acc, line) => {
      const [key, value] = line.split('=');
      if (key && value) {
        acc[key.trim()] = value.trim();
      }
      return acc;
    }, {});

  Object.assign(process.env, envVars);
}

const port = process.env.YAAK_DEV_PORT || '1420';
const config = JSON.stringify({ build: { devUrl: `http://localhost:${port}` } });

// Get additional arguments passed after npm run app-dev --
const additionalArgs = process.argv.slice(2);

const args = [
  'dev',
  '--no-watch',
  '--config', 'crates-tauri/yaak-app/tauri.development.conf.json',
  '--config', config,
  ...additionalArgs
];

const result = spawnSync('tauri', args, { stdio: 'inherit', shell: false, env: process.env });

process.exit(result.status || 0);
