#!/usr/bin/env node
/**
 * Script: Criar novo hook customizado
 * Uso: node create-hook.js useNomeDoHook [feature]
 * Exemplo: node create-hook.js useUserData rh
 */

const fs = require('fs');
const path = require('path');

const [, , hookName, feature] = process.argv;

if (!hookName || !hookName.startsWith('use')) {
  console.error('❌ Nome do hook é obrigatório e deve começar com "use"!');
  console.log('Uso: node create-hook.js useNomeDoHook [feature]');
  process.exit(1);
}

// Definir caminho
const basePath = feature 
  ? path.join(__dirname, '../../src/features', feature, 'hooks')
  : path.join(__dirname, '../../src/hooks');

const fileName = `${hookName}.js`;
const filePath = path.join(basePath, fileName);

// Criar pasta se não existir
if (!fs.existsSync(basePath)) {
  fs.mkdirSync(basePath, { recursive: true });
}

// Template do hook
const hookTemplate = `import { useState, useEffect } from 'react';

/**
 * ${hookName} - Hook customizado
 * @returns {Object} - Estado e funções do hook
 */
export const ${hookName} = () => {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(null);

  useEffect(() => {
    // Implementar lógica
  }, []);

  const handleAction = async () => {
    try {
      setLoading(true);
      // Implementar ação
    } catch (err) {
      setError(err.message);
    } finally {
      setLoading(false);
    }
  };

  return {
    data,
    loading,
    error,
    handleAction,
  };
};
`;

// Escrever arquivo
fs.writeFileSync(filePath, hookTemplate);

console.log(`✅ Hook ${hookName} criado com sucesso!`);
console.log(`📁 Caminho: ${filePath}`);
console.log(`\n📝 Próximos passos:`);
console.log(`1. Implementar lógica do hook`);
console.log(`2. Adicionar testes se necessário`);
console.log(`3. Importar nas views que precisam`);
