UNPKG

cli-droidscript

Version:

Command Line Interface for DroidScript.

109 lines (100 loc) 3.02 kB
const path = require("path"); const { prompt } = require('enquirer'); const ora = require('ora'); const ext = require("./extension"); const fs = require("fs"); const os = require('os'); let CONFIG = { serverIP: "", PORT: "8088", password: "" } async function connect() { // getting configurations CONFIG = ext.getLocalData(); try { if( !CONFIG.serverIP ) await getIpAddress(); await getServerInfo(); } catch( error ) { console.log( error ); } } async function getIpAddress( msg ) { try { const response = await prompt({ type: 'input', name: 'ip', message: msg || `Enter IP Address: `, required: true }); let ip = response.ip; if( !ip.includes(":8088") ) ip += ":8088"; if( !ip.startsWith("http://") ) ip = "http://"+ip; CONFIG.serverIP = ip; ext.setCONFIG( CONFIG ); return ip; } catch( err ) { return ""; } } async function getServerInfo() { const spinner = ora(`Connecting to ${CONFIG.serverIP}`).start(); try { serverInfo = await ext.getServerInfo(); if(serverInfo.status == "ok") { spinner.succeed(`Connected to ${CONFIG.serverIP}.`); if(serverInfo.usepass == true) { if(CONFIG.password) await login(); else await askForPassword(); } CONFIG = {...CONFIG, ...serverInfo}; ext.setCONFIG( CONFIG ); await ext.saveLocaData(); } else { spinner.fail(`Unable to connect to ${CONFIG.serverIP}. Make sure the IP Address is correct.`); await getIpAddress("Re-enter IP Address: "); return getServerInfo(); } return serverInfo; } catch( error ) { spinner.fail(`Error connecting to ${CONFIG.serverIP}. Make sure the IP Address is correct.`); await getIpAddress("Re-enter IP Address: "); return getServerInfo(); } } async function askForPassword( msg ) { try { const response = await prompt({ type: 'password', name: 'password', message: msg || `Enter Password: `, required: true }); var password = response.password; CONFIG.password = password; ext.setCONFIG( CONFIG ); await login(); } catch( error ) { return; } } async function login() { const spinner = ora(`Logging in...`).start(); try { var res = await ext.login( CONFIG.password ); if(res.data.status == "ok") { spinner.succeed("Login successful."); ext.saveLocaData(); } else { spinner.fail("Invalid password. Please try again."); if(serverInfo.usepass == true) return askForPassword("Re-enter password: "); } } catch( error ) { spinner.fail("Connection error!"); return; } } module.exports = connect;