UNPKG

mangakonekuto

Version:

Your CLI for reading manga from the terminal

225 lines (224 loc) 11.1 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.get = get; const inquirer_1 = __importDefault(require("inquirer")); const chalk_1 = __importDefault(require("chalk")); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const open_1 = __importDefault(require("open")); const axios_1 = __importDefault(require("axios")); const os_1 = __importDefault(require("os")); const pkg = require("../.././package.json"); const SettingsConfig_1 = __importDefault(require("../utils/SettingsConfig")); class Settings { manage() { return __awaiter(this, void 0, void 0, function* () { this.showCurrentSettings(); const settingAnswer = yield inquirer_1.default.prompt([ { type: 'list', name: 'setting', message: 'Choose a setting to change:', choices: [ 'Change API Key', 'Update Language', 'Enable Server', 'Change Download Folder', 'Verify Download Folder', 'Check PDF Viewer Setup', 'Check For Updates', 'Back' ], }, ]); switch (settingAnswer.setting) { case 'Change API Key': yield this.changeApiKey(); break; case 'Update Language': yield this.updateLanguage(); break; case 'Enable Server': yield this.enableServer(); break; case 'Change Download Folder': yield this.changeDownloadFolder(); break; case 'Verify Download Folder': yield this.verifyDownloadFolder(); break; case 'Check PDF Viewer Setup': yield this.checkPdfSetup(); break; case 'Check For Updates': yield this.checkForUpdates(); break; default: console.log(chalk_1.default.gray('Returning to main menu...')); } }); } showCurrentSettings() { const currentApiKey = SettingsConfig_1.default.get("Settings.ApiKey") || "Not Set"; const currentLanguage = SettingsConfig_1.default.get("Settings.Lang") || "Not Set"; const currentServers = SettingsConfig_1.default.get("Settings.Server") || "Not Set"; const currentDownloadFolder = SettingsConfig_1.default.get("Settings.DownloadFolder") || "Not Set"; console.log(chalk_1.default.yellow("\nCurrent Settings:")); console.log(chalk_1.default.green(`API Key: ${currentApiKey}`)); console.log(chalk_1.default.green(`Language: ${currentLanguage}`)); console.log(chalk_1.default.green(`Enabled Servers: ${currentServers}`)); console.log(chalk_1.default.green(`Download Folder: ${currentDownloadFolder}`)); console.log(chalk_1.default.blue(`Version: ${pkg.version}`)); console.log(chalk_1.default.blue(`OS: ${os_1.default.platform()} ${os_1.default.arch()}`)); console.log("\n"); } changeApiKey() { return __awaiter(this, void 0, void 0, function* () { const currentApiKey = SettingsConfig_1.default.get("Settings.ApiKey") || "Not Set"; console.log(chalk_1.default.yellow(`Current API Key: ${currentApiKey}`)); const newApiKey = yield inquirer_1.default.prompt([ { type: 'input', name: 'apiKey', message: 'Enter your new Manga API Key:', }, ]); SettingsConfig_1.default.set("Settings.ApiKey", newApiKey.apiKey); console.log(chalk_1.default.green(`API Key updated to: ${newApiKey.apiKey}`)); }); } updateLanguage() { return __awaiter(this, void 0, void 0, function* () { const currentLanguage = SettingsConfig_1.default.get("Settings.Lang") || "Not Set"; console.log(chalk_1.default.yellow(`Current Language: ${currentLanguage}`)); const preferences = yield inquirer_1.default.prompt([ { type: 'list', name: 'language', message: 'Select your preferred manga language:', choices: ['English', 'Japanese', 'Spanish', 'French'], }, ]); SettingsConfig_1.default.set("Settings.Lang", preferences.language); console.log(chalk_1.default.green(`Preferences updated: Language set to ${preferences.language}`)); }); } enableServer() { return __awaiter(this, void 0, void 0, function* () { const currentServers = SettingsConfig_1.default.get("Settings.Server") || "Not Set"; console.log(chalk_1.default.yellow(`Current Enabled Servers: ${currentServers}`)); const ServerChoice = yield inquirer_1.default.prompt([ { type: "checkbox", name: "server", message: "Choose Which Server to Enable", choices: ["MangaKakalot"], }, ]); SettingsConfig_1.default.set("Settings.Server", ServerChoice.server); console.log(chalk_1.default.green(`Enabled Servers updated: ${ServerChoice.server.join(', ')}`)); }); } changeDownloadFolder() { return __awaiter(this, void 0, void 0, function* () { const currentFolder = SettingsConfig_1.default.get("Settings.DownloadFolder") || "Not Set"; console.log(chalk_1.default.yellow(`Current Download Folder: ${currentFolder}`)); const folderAnswer = yield inquirer_1.default.prompt([ { type: 'input', name: 'folder', message: 'Enter the path for your Download Folder:', default: './Images' } ]); SettingsConfig_1.default.set("Settings.DownloadFolder", folderAnswer.folder); console.log(chalk_1.default.green(`Download folder updated to: ${folderAnswer.folder}`)); }); } verifyDownloadFolder() { return __awaiter(this, void 0, void 0, function* () { const folder = SettingsConfig_1.default.get("Settings.DownloadFolder"); if (!folder) { console.log(chalk_1.default.red("No Download Folder set. Please set it first.")); return; } try { yield fs_extra_1.default.ensureDir(folder); const testFilePath = path_1.default.join(folder, 'test_write_file.txt'); yield fs_extra_1.default.writeFile(testFilePath, "This is a test."); const content = yield fs_extra_1.default.readFile(testFilePath, 'utf-8'); if (content === "This is a test.") { yield fs_extra_1.default.remove(testFilePath); console.log(chalk_1.default.green(`✅ Download folder verified. Read & write successful at: ${folder}`)); } else { throw new Error("File contents did not match."); } } catch (err) { console.error(chalk_1.default.red(`❌ Failed to verify folder: ${folder}`)); console.error(err); } }); } checkPdfSetup() { return __awaiter(this, void 0, void 0, function* () { console.log(chalk_1.default.yellow("\nStarting PDF system check...")); const examplePdfPath = path_1.default.resolve(__dirname, '../../../MangaKonekuto/example.pdf'); if (!fs_extra_1.default.existsSync(examplePdfPath)) { console.error(chalk_1.default.red(`❌ Example PDF not found at: ${examplePdfPath}`)); console.log(`Please make sure 'example.pdf' is in your project directory.`); return; } try { yield (0, open_1.default)(examplePdfPath); console.log(chalk_1.default.green(`✅ Successfully opened example PDF.`)); console.log(`🎉 Your system is ready to open PDFs from this CLI.`); } catch (err) { console.error(chalk_1.default.red(`❌ Could not open PDF automatically.`)); console.log(`Make sure you have a default PDF viewer installed.`); console.log(`Try opening "${examplePdfPath}" manually to verify.`); } }); } checkForUpdates() { return __awaiter(this, void 0, void 0, function* () { console.log(chalk_1.default.yellow("\n🔍 Checking for updates on npm...")); try { const { data } = yield axios_1.default.get(`https://registry.npmjs.org/mangakonekuto/latest`); const latestVersion = data.version; const currentVersion = require('../../package.json').version; if (latestVersion !== currentVersion) { console.log(chalk_1.default.blue(`🚀 A new version is available!`)); console.log(chalk_1.default.green(`Current: v${currentVersion}`)); console.log(chalk_1.default.green(`Latest: v${latestVersion}`)); console.log(chalk_1.default.yellow(`Run: npm i -g mangakonekuto to update.`)); } else { console.log(chalk_1.default.green(`🎉 You are using the latest version (v${currentVersion}).`)); } } catch (err) { console.error(chalk_1.default.red("❌ Could not check for updates.")); console.error(err); } }); } } exports.default = Settings; function get(arg0) { throw new Error('Function not implemented.'); }