-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
Right now if a file under preview is moved or deleted, GHMP throws an uncaught exception but keeps running:
$ github-markdown-preview /tmp/foo.md &
[2] 64025
FVFYK0RTHV2H:Work la-dmoles$ Preview available at file:///private/tmp/foo.md.html
rm /tmp/foo.md
FVFYK0RTHV2H:Work la-dmoles$ E, [2019-07-11T09:26:39.413391 #64025] ERROR -- : exception while processing events: Source file deleted Backtrace:
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/github-markdown-preview-5.0.0/lib/github-markdown-preview/html_preview.rb:95:in `update'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/github-markdown-preview-5.0.0/lib/github-markdown-preview/html_preview.rb:137:in `block in start_watch'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/event/config.rb:23:in `call'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/event/processor.rb:115:in `_process_changes'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/event/processor.rb:19:in `block in loop_for'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/event/processor.rb:15:in `loop'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/event/processor.rb:15:in `loop_for'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/event/loop.rb:84:in `_wait_for_changes'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/event/loop.rb:42:in `block in setup'
-- /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb:6:in `block in add'
ps
PID TTY TIME CMD
58571 ttys000 0:00.09 -bash
40405 ttys001 0:00.08 -bash
64025 ttys003 0:00.54 ruby /Users/la-dmoles/.rvm/gems/ruby-2.6.3/bin/github-markdown-preview /tmp/foo.md
64026 ttys003 0:00.01 /Users/la-dmoles/.rvm/gems/ruby-2.6.3/gems/rb-fsevent-0.10.3/bin/fsevent_watch --format=otnetstring --la
If it's been backgrounded (my usual workflow, I don't know how common it is), it then has to be explicitly foregrounded and Ctrl-C'd, or killed manually.
Would it make sense to exit more cleanly? It looks like something like this (if cleaned up a little bit) in HtmlPreview.start_watch might do it:
@listener = Listen.to(source_file_dir) do
begin
update
rescue FileNotFoundError
Listen::Logger.error("Source file deleted")
end_watch
end
endBut that might also complicate the sleep if blocking at the end -- might have to be a loop that checks @listener.processing?.
Metadata
Metadata
Assignees
Labels
No labels