UNPKG

timoideas

Version:

CLI oficial de Timoideas para automatizar tareas de desarrollo

92 lines (76 loc) 3.1 kB
const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); const os = require("os"); module.exports = function setupSupabaseConnection() { console.log( "\n📡 Iniciando configuración de conexión a base de datos (Supabase)..." ); const projectRoot = process.cwd(); const dbPath = path.join(projectRoot, "src/lib/db"); const envPath = path.join(projectRoot, ".env.local"); // 1. Crear carpeta si no existe fs.mkdirSync(dbPath, { recursive: true }); // 2. Crear archivo Supabase client const clientContent = `// 📦 Supabase client para Next.js 15 import { createClient } from "@supabase/supabase-js" const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY if (!supabaseUrl || !supabaseKey) { console.warn("⚠️ Supabase no está correctamente configurado. Revisa tu archivo .env.local") } export const supabase = createClient(supabaseUrl || "", supabaseKey || "") `; const clientFile = path.join(dbPath, "supabase.ts"); fs.writeFileSync(clientFile, clientContent); console.log("✅ Archivo creado: src/lib/db/supabase.ts"); // 3. Añadir variables a .env.local si no existen if (!fs.existsSync(envPath)) fs.writeFileSync(envPath, ""); const envVars = fs.readFileSync(envPath, "utf-8"); const appendIfMissing = (key) => { if (!envVars.includes(`${key}=`)) { fs.appendFileSync(envPath, `\n${key}=`); console.log(`🔧 Variable añadida: ${key}`); } }; appendIfMissing("NEXT_PUBLIC_SUPABASE_URL"); appendIfMissing("NEXT_PUBLIC_SUPABASE_ANON_KEY"); // 4. Instalar @supabase/supabase-js si no está const pkgPath = path.join(projectRoot, "package.json"); if (fs.existsSync(pkgPath)) { const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8")); const deps = pkg.dependencies || {}; if (!deps["@supabase/supabase-js"]) { console.log("📦 Instalando @supabase/supabase-js..."); try { execSync("npm install @supabase/supabase-js", { stdio: "inherit" }); } catch (err) { console.error("❌ Error al instalar Supabase:", err.message); } } else { console.log("✅ @supabase/supabase-js ya está instalado."); } } // 5. Abrir Supabase en navegador const supabaseURL = "https://supabase.com/dashboard/projects"; const openCommand = os.platform() === "darwin" ? "open" : os.platform() === "win32" ? "start" : "xdg-open"; try { execSync(`${openCommand} ${supabaseURL}`); console.log("🌐 Supabase abierto en tu navegador."); } catch { console.warn("⚠️ No se pudo abrir el navegador automáticamente."); } // 6. Abrir archivo .env.local en VS Code try { execSync("code .env.local"); console.log("📝 Abriendo .env.local en VS Code..."); } catch { console.warn("⚠️ No se pudo abrir VS Code automáticamente."); } console.log("\n✅ Supabase configurado correctamente."); };