'use strict'; const blessed = require('neo-blessed'); const clipboard = require('clipboardy'); const argv = require('./argv'); const { renderReleases, renderScene } = require('./tui/render'); const initServer = require('./web/server'); const fetchReleases = require('./fetch-releases'); const fetchScene = require('./fetch-scene'); function initScreen() { const screen = blessed.screen({ title: `traxxx ${new Date().getTime()}`, smartCSR: true, mouse: false, }); screen.enableInput(); screen.key(['escape', 'q', 'C-c'], () => { screen.render(); screen.destroy(); }); return screen; } function getMethod() { if (argv.scene) { return { fetch: () => fetchScene(argv.scene), render: renderScene, }; } if (argv.fetch) { return { fetch: () => fetchReleases(), render: renderReleases, }; } return initServer(); } async function init() { const screen = argv.render && !argv.filename && initScreen(); try { const method = getMethod(); if (method) { const result = await method.fetch(); if (result) { if (argv.copy && result.copy) { clipboard.writeSync(result.copy); console.log(`Result copied to clipboard: ${result.copy}`); } if (argv.filename && result.filename) { console.log(result.filename); // setTimeout(() => log(), 5000); return; } if (argv.render) { method.render(result, screen); } } } } catch (error) { console.error(argv.debug ? error : error.message); } } init();