UNPKG

3cb-cli

Version:

Un CLI para gestionar plantillas

101 lines (90 loc) 3 kB
#!/usr/bin/env node const { program } = require('commander'); const axios = require('axios'); const fs = require('fs'); const path = require('path'); const jwt = require('jsonwebtoken'); // const SERVER_URL = 'http://localhost:3000'; const SERVER_URL = 'https://cli3cb.3cbsoluciones.com'; const TOKEN_FILE = path.join(__dirname, 'token.json'); // Función para guardar el token localmente function saveToken(token) { fs.writeFileSync(TOKEN_FILE, JSON.stringify({ token })); } // Función para leer el token function getToken() { if (fs.existsSync(TOKEN_FILE)) { const data = JSON.parse(fs.readFileSync(TOKEN_FILE)); return data.token; } return null; } // Comando de inicio de sesión program .command('login') .description('Inicia sesión con tu cuenta') .action(async () => { const email = await prompt('Correo: '); const password = await prompt('Contraseña: '); try { const response = await axios.post(`${SERVER_URL}/login`, { email, password }); console.log(response.data.message); saveToken(response.data.token); } catch (error) { console.error('Error al iniciar sesión:', error); } }); // Comando para acceder a plantillas gratuitas program .command('free') .description('Accede a plantillas gratuitas') .action(async () => { try { const response = await axios.get(`${SERVER_URL}/free-templates`); console.log('Plantillas gratuitas disponibles:'); response.data.templates.forEach((template) => console.log(`- ${template}`)); } catch (error) { console.error('Error al obtener plantillas gratuitas:', error.message); } }); // Comando para acceder a plantillas premium program .command('premium') .description('Accede a plantillas premium') .action(async () => { const token = getToken(); if (!token) { console.error('Debes iniciar sesión primero usando el comando "login".'); return; } try { const response = await axios.get(`${SERVER_URL}/premium-templates`, { headers: { Authorization: `Bearer ${token}` }, }); console.log('Plantillas premium disponibles:'); response.data.templates.forEach((template) => console.log(`- ${template}`)); } catch (error) { console.error('Error al acceder a plantillas premium:', error); } }); // Simulación de prompt para ingresar correo y contraseña async function prompt(question) { return new Promise((resolve) => { process.stdout.write(question); process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.once('data', (data) => { resolve(data.trim()); }); }); } program.parse(process.argv);