forked from DebaucheryLibrarian/traxxx
81 lines
1.8 KiB
JavaScript
81 lines
1.8 KiB
JavaScript
'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();
|