From 8512c44b6403c126bf961c0fd0c2798d6bfdfcea Mon Sep 17 00:00:00 2001 From: Florrie Date: Sat, 6 Jul 2019 00:16:02 -0300 Subject: Experimental telnet server --- index.js | 88 +++++++++++++++++----------------------------------------------- 1 file changed, 23 insertions(+), 65 deletions(-) (limited to 'index.js') diff --git a/index.js b/index.js index 102e75a..10e0696 100755 --- a/index.js +++ b/index.js @@ -5,7 +5,9 @@ const { getAllCrawlersForArg } = require('./crawlers') const AppElement = require('./ui') const Backend = require('./backend') +const TelnetServer = require('./telnet-server') const processSmartPlaylist = require('./smart-playlist') +const setupClient = require('./client') const { getItemPathString, @@ -48,12 +50,14 @@ process.on('unhandledRejection', error => { }) async function main() { - const interfacer = new CommandLineInterfacer() - - const root = new Root(interfacer) - const backend = new Backend() + const result = await backend.setup() + if (result.error) { + console.error(result.error) + process.exit(1) + } + backend.on('playing', track => { if (track) { writeFile(backend.rootDirectory + '/current-track.txt', @@ -63,58 +67,24 @@ async function main() { } }) - const appElement = new AppElement(backend) - root.addChild(appElement) - root.select(appElement) - - const result = await backend.setup() - - if (result.error) { - console.error(result.error) - process.exit(1) - } - - const cleanTerminal = () => { - process.stdout.write(ansi.cleanCursor()) - process.stdout.write(ansi.disableAlternateScreen()) - } - - const dirtyTerminal = () => { - process.stdout.write(ansi.enableAlternateScreen()) - process.stdout.write(ansi.startTrackingMouse()) - } + const { appElement, renderInterval } = await setupClient({ + backend, + interfacer: new CommandLineInterfacer(), + writable: process.stdout + }) appElement.on('quitRequested', () => { - cleanTerminal() + if (telnetServer) { + telnetServer.disconnectAllSockets('User closed mtui - see you!') + } + clearInterval(renderInterval) process.exit(0) }) appElement.on('suspendRequested', () => { - cleanTerminal() process.kill(process.pid, 'SIGTSTP') }) - let grouplike = { - name: 'My ~/Music Library', - comment: ( - '(Add songs and folders to ~/Music to make them show up here,' + - ' or pass mtui your own playlist.json file!)'), - source: ['crawl-local', process.env.HOME + '/Music'] - } - - grouplike = await processSmartPlaylist(grouplike) - - appElement.tabber.currentElement.loadGrouplike(grouplike) - - root.select(appElement) - - // Check size, now that we're about to display. - const size = await interfacer.getScreenSize() - root.w = size.width - root.h = size.height - root.fixAllLayout() - - dirtyTerminal() process.on('SIGCONT', () => { flushable.resizeScreen({lines: flushable.screenLines, cols: flushable.screenCols}) process.stdin.setRawMode(false) @@ -122,19 +92,6 @@ async function main() { dirtyTerminal() }) - const flushable = new Flushable(process.stdout, true) - flushable.resizeScreen(size) - flushable.shouldShowCompressionStatistics = process.argv.includes('--show-ansi-stats') - flushable.write(ansi.clearScreen()) - flushable.flush() - - interfacer.on('resize', newSize => { - root.w = newSize.width - root.h = newSize.height - flushable.resizeScreen(newSize) - root.fixAllLayout() - }) - const loadPlaylists = async () => { for (let i = 2; i < process.argv.length; i++) { if (!process.argv[i].startsWith('--')) { @@ -145,6 +102,12 @@ async function main() { const loadPlaylistPromise = loadPlaylists() + let telnetServer + if (process.argv.includes('--telnet-server')) { + telnetServer = new TelnetServer(backend) + await telnetServer.listen(1244) + } + if (process.argv.includes('--stress-test')) { await loadPlaylistPromise @@ -191,11 +154,6 @@ async function main() { return } - - setInterval(() => { - root.renderTo(flushable) - flushable.flush() - }, 50) } main().catch(err => { -- cgit 1.3.0-6-gf8a5