3cb-cli
Version:
Un CLI para gestionar plantillas
101 lines (90 loc) • 3 kB
JavaScript
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);