traxxx/src/app.js

81 lines
1.8 KiB
JavaScript
Raw Normal View History

'use strict';
const blessed = require('neo-blessed');
2019-03-24 02:08:51 +00:00
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();
2019-03-24 02:08:51 +00:00
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();