2019-03-03 03:18:33 +00:00
|
|
|
'use strict';
|
|
|
|
|
2019-03-11 03:19:36 +00:00
|
|
|
const blessed = require('neo-blessed');
|
2019-03-24 02:08:51 +00:00
|
|
|
const clipboard = require('clipboardy');
|
2019-03-04 03:19:03 +00:00
|
|
|
|
2019-03-18 03:46:53 +00:00
|
|
|
const argv = require('./argv');
|
2019-03-23 21:48:39 +00:00
|
|
|
const { renderReleases, renderScene } = require('./tui/render');
|
2019-05-06 00:01:57 +00:00
|
|
|
const initServer = require('./web/server');
|
2019-03-23 21:48:39 +00:00
|
|
|
|
|
|
|
const fetchReleases = require('./fetch-releases');
|
|
|
|
const fetchScene = require('./fetch-scene');
|
2019-03-11 03:19:36 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
2019-03-04 01:46:33 +00:00
|
|
|
|
2019-03-23 21:48:39 +00:00
|
|
|
function getMethod() {
|
|
|
|
if (argv.scene) {
|
|
|
|
return {
|
|
|
|
fetch: () => fetchScene(argv.scene),
|
|
|
|
render: renderScene,
|
|
|
|
};
|
|
|
|
}
|
2019-03-04 03:19:03 +00:00
|
|
|
|
2019-05-06 00:01:57 +00:00
|
|
|
if (argv.fetch) {
|
|
|
|
return {
|
|
|
|
fetch: () => fetchReleases(),
|
|
|
|
render: renderReleases,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-06-03 03:31:38 +00:00
|
|
|
return initServer();
|
2019-03-04 03:19:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
async function init() {
|
2019-05-06 00:01:57 +00:00
|
|
|
const screen = argv.render && !argv.filename && initScreen();
|
2019-04-12 01:54:34 +00:00
|
|
|
|
2019-03-23 21:48:39 +00:00
|
|
|
try {
|
|
|
|
const method = getMethod();
|
2019-03-18 03:46:53 +00:00
|
|
|
|
2019-05-06 00:01:57 +00:00
|
|
|
if (method) {
|
|
|
|
const result = await method.fetch();
|
2019-03-24 02:08:51 +00:00
|
|
|
|
2019-05-06 00:01:57 +00:00
|
|
|
if (result) {
|
|
|
|
if (argv.copy && result.copy) {
|
|
|
|
clipboard.writeSync(result.copy);
|
|
|
|
console.log(`Result copied to clipboard: ${result.copy}`);
|
|
|
|
}
|
2019-04-10 02:44:36 +00:00
|
|
|
|
2019-05-06 00:01:57 +00:00
|
|
|
if (argv.filename && result.filename) {
|
|
|
|
console.log(result.filename);
|
|
|
|
|
|
|
|
// setTimeout(() => log(), 5000);
|
|
|
|
return;
|
|
|
|
}
|
2019-04-10 02:44:36 +00:00
|
|
|
|
2019-05-06 00:01:57 +00:00
|
|
|
if (argv.render) {
|
|
|
|
method.render(result, screen);
|
|
|
|
}
|
2019-04-12 01:54:34 +00:00
|
|
|
}
|
2019-03-23 21:48:39 +00:00
|
|
|
}
|
|
|
|
} catch (error) {
|
2019-03-24 00:29:22 +00:00
|
|
|
console.error(argv.debug ? error : error.message);
|
2019-03-18 03:46:53 +00:00
|
|
|
}
|
2019-03-03 03:18:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
init();
|