Class: Pocketbook::CLI::Watcher
- Inherits:
-
Object
- Object
- Pocketbook::CLI::Watcher
- Defined in:
- lib/pocketbook/cli/watch_command.rb
Defined Under Namespace
Classes: ChangeBuffer
Constant Summary collapse
- WATCHABLE_EXTENSIONS =
%w[.md .css .erb .yml .yaml].freeze
- STOP_POLL_INTERVAL =
0.1
Instance Method Summary collapse
-
#initialize(request:, stdout: $stdout, stderr: $stderr) ⇒ Watcher
constructor
A new instance of Watcher.
- #run ⇒ Object
Constructor Details
#initialize(request:, stdout: $stdout, stderr: $stderr) ⇒ Watcher
Returns a new instance of Watcher.
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/pocketbook/cli/watch_command.rb', line 80 def initialize(request:, stdout: $stdout, stderr: $stderr) @request = request @stdout = stdout @stderr = stderr @changes = ChangeBuffer.new( debounce_seconds: @request.debounce_ms.to_f / 1000.0, poll_interval: STOP_POLL_INTERVAL ) @theme_root = nil @watch_directories = [] end |
Instance Method Details
#run ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/pocketbook/cli/watch_command.rb', line 92 def run theme = build_theme @theme_root = theme.root_path @watch_directories = compute_watch_directories render(reason: "initial build", preloaded_theme: theme, open_output: @request.open_output) listener = ::Listen.to(*@watch_directories) do |modified, added, removed| register_changes(modified + added + removed) end worker = Thread.new { worker_loop } with_signal_traps do listener.start @changes.wait_until_stopped end ensure @changes.stop! listener&.stop worker&.join @stdout.puts("[pocketbook] Watch stopped.") end |